当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 可定制大小和数量的随机数函数

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 可定制大小和数量的随机数函数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 254 ::
收藏到网摘: n/a

可定制大小和数量的随机数函数
作者:93106部队 袁海鸿

下载本文示例源代码

近日在做一个考试软件时,需要每次题目不同且题数可定制,在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中调试通过。
通信地址:(024000)内蒙赤峰市93106部队自动化站