可定制大小和数量的随机数函数
2007-03-16 21:56:53 来源:WEB开发网核心提示:本文示例源代码或素材下载 近日在做一个考试软件时,需要每次题目不同且题数可定制,可定制大小和数量的随机数函数,在C++没找到适用函数,就顺手做了一个较通用的C++的随机函数扩展,在相应的类实现中传递最大值和数量,输出随机数序列,请大家编程时参考,void randEx(int MAX,int NUM){int
本文示例源代码或素材下载
近日在做一个考试软件时,需要每次题目不同且题数可定制,在C++没找到适用函数,就顺手做了一个较通用的C++的随机函数扩展,请大家编程时参考。
void randEx(int MAX,int NUM)
{
int k=0;
int j=0;
time_t t;
//设置rand函数所用的启始种子值,以期每次产生的随机数序列均不相同。
srand((unsigned) time(&t));
for (k=1;k<=NUM;k++)//定制随机数数量。
{
RAND[k]=rand()%MAX;//定制随机数在0至最大值之间。
do
{
for (j=1;j<k;j++) if (RAND[j]==RAND[k]) //一次随机数序列中有相同随机数则再
//产生一个,直至一次随机数序列中随机数全不相同。
{
RAND[k]=rand()%MAX;
break;
}
}while(j<k);
}
}
具体用法:首先在你的工程中相应类头文件中定义一个整型数组RAND[],把此函数加入头文件,在相应的类实现中传递最大值和数量,输出随机数序列。详见示例工程, 示例工程中主要代码如下:// TestRandDlg.h : header file
//
class CTestRandDlg : public CDialog
{
public:
CTestRandDlg(CWnd* pParent = NULL); // standard constructor
int RAND[20];
void randEx(int MAX,int NUM);
CWnd* p_StaticWnd;
.....
}
// TestRandDlg.cpp : implementation file
//
.....
void CTestRandDlg::OnTestrand()
{
UpdateData(TRUE);
randEx(m_nRandMax,m_nRandNum);
CString str;
if (m_nRandNum>=1){
str.Format("%d",RAND[1]);
p_StaticWnd = GetDlgItem(IDC_STATIC1);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=2){
str.Format("%d",RAND[2]);
p_StaticWnd = GetDlgItem(IDC_STATIC2);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=3){
str.Format("%d",RAND[3]);
p_StaticWnd = GetDlgItem(IDC_STATIC3);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=4){
str.Format("%d",RAND[4]);
p_StaticWnd = GetDlgItem(IDC_STATIC4);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=5){
str.Format("%d",RAND[5]);
p_StaticWnd = GetDlgItem(IDC_STATIC5);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=6){
str.Format("%d",RAND[6]);
p_StaticWnd = GetDlgItem(IDC_STATIC6);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=7){
str.Format("%d",RAND[7]);
p_StaticWnd = GetDlgItem(IDC_STATIC7);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=8){
str.Format("%d",RAND[8]);
p_StaticWnd = GetDlgItem(IDC_STATIC8);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=9){
str.Format("%d",RAND[9]);
p_StaticWnd = GetDlgItem(IDC_STATIC9);
p_StaticWnd->SetWindowText(str);}
if (m_nRandNum>=10){
str.Format("%d",RAND[10]);
p_StaticWnd = GetDlgItem(IDC_STATIC10);
p_StaticWnd->SetWindowText(str);}
UpdateData(FALSE);
}
本工程在VC++6.0+WindowsXP中调试通过。
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››定制AIX操作系统的shell环境
- ››定制任务栏上的系统菜单
- ››定制一个灵活的struts框架
- ››定制xDoclet标签自动生成框架配置
- ››定制你的Java--根据应用剪裁JavaBeans
- ››定制 bugzilla 进行项目管理
- ››定制Office“我的位置”框 管理文档更方便
更多精彩
赞助商链接