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

VC++
几个数字信号处理算法程序
简易软盘镜像工具的实现及操作系统编写初步
教你使用正则表达式
C++ 扩展和嵌入 Python
拷贝构造和赋值操作符,C#和本机 C++ 代码的互用性
精通VC与Matlab联合编程(六)
精通VC与Matlab联合编程(五)
一个排序用的C++函数模板
浅析VC与MATLAB联合编程
C++编译器如何实现异常处理
文件重定义冲突的分析与解决
一步一步实现MFC扩展DLL中导出类和对话框
C宏:智者的利刃,愚者的恶梦!
引用的作用
《UTF-8与GB2312之间的互换》的改进
程序风格的要素-C++风格指南
VC+6.0实现文本串的自由拆分
怎样给串行化类分配版本号(可配置版本模式)
在常规的编程任务中使用新的 <tuple> 库
使用 typedef 抑制劣质代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 247 ::
收藏到网摘: 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部队自动化站