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

近日在做一个考试软件时,需要每次题目不同且题数可定制,在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中调试通过。

本文配套源码

时间: 2024-11-01 21:17:24

可定制大小和数量的随机数函数的相关文章

php源码分析之DZX1.5随机数函数random用法

  本文实例讲述了php源码分析之DZX1.5随机数函数random用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php /** * @param int $length: 随机数长度 * @param int $numeric: 0或非0,其中0表示随机数由全数字组成,非0表示随机数由全字母组成 * @return string: 返回生成的随机数 */ function random($l

php定义参数数量可变的函数用法实例

 这篇文章主要介绍了php定义参数数量可变的函数用法,实例分析了func_get_args的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php定义参数数量可变的函数用法.分享给大家供大家参考.具体分析如下: php中的的函数参数可以不固定,甚至不用定义参数,在函数内部使用func_get_args()函数获得参数列表,调用时可以为函数指定任意参数,非常方便 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php function addanyt

文件大小-C/C++怎么获得大于8G和16G文件的大小??有这种函数么?

问题描述 C/C++怎么获得大于8G和16G文件的大小??有这种函数么? C/C++怎么获得其大小大于8G或16G的文件的大小?? 有这种函数么?? 解决方案 CFile cfile; CFileStatus rStatus; CFile::GetStatus(_T("D:\Program Files\360\360SD\360hips.exe"),rStatus); ULONGLONG ulong = rStatus.m_size; 主要是int只能表示4G(4294967296)

php源码分析之DZX1.5随机数函数random用法_php技巧

本文实例讲述了php源码分析之DZX1.5随机数函数random用法.分享给大家供大家参考.具体如下: <?php /** * @param int $length: 随机数长度 * @param int $numeric: 0或非0,其中0表示随机数由全数字组成,非0表示随机数由全字母组成 * @return string: 返回生成的随机数 */ function random($length, $numeric = 0) { $seed = base_convert(md5(microti

php定义参数数量可变的函数用法实例_php技巧

本文实例讲述了php定义参数数量可变的函数用法.分享给大家供大家参考.具体分析如下: php中的的函数参数可以不固定,甚至不用定义参数,在函数内部使用func_get_args()函数获得参数列表,调用时可以为函数指定任意参数,非常方便 <?php function addanything (){ $total = 0; $args = func_get_args (); for ($i = 0; $i < count ($args); $i++){ if (is_int ($args[$i]

php中mt_rand()随机数函数用法_php技巧

本文实例讲述了php中mt_rand()随机数函数用法.分享给大家供大家参考.具体分析如下: mt_rand() 使用 mersenne twister 算法返回随机整数. 语法:mt_rand(min,max) 说明:如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 rand_max 之间的伪随机数,例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5,15). 在 3.0.7 之前的版本中,max 的含义是 range,要在这些版本中得到

MySQL的指定范围随机数函数rand()的使用技巧_Mysql

公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数. 而在mysql里,随机数函数rand不能传参,产生的0到1之间的浮点数,要是我们需要在mysql产生大于1的随机整数,该怎么办呢? 这样的需求并不陌生,例如,咱做的文章系统,需要作弊,给文章的浏览量随机加上某个范围内的整数. 现在,假设需要产生234到5678之间的随机整数,mysql下怎么实现

C/C++产生随机数函数简单介绍_C 语言

计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了.)  我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数

自动截取ZBLOG PHP摘要字符数量内容的函数

自动截取ZBLOG PHP摘要字符数量内容的函数 无论我们是在使用WordPress,还是ZBLOG PHP程序的时候,大部分默认的主题如果没有特殊的处理,我们首页或者栏目文章列表的摘要文字部分都是需要我们在后台编辑文章的时候用MORE分割线进行分割,这样才会显示摘要部分的内容,如果不进行分割或者忘记,则会在列表页显示这篇文章的所有内容. 老蒋个人还是比较喜欢手工进行分割的,这样不限制同一个分割比例,看着界面体验比较好,如果长度都一样,感觉不是太好,我的个人看法.如果我们希望统一的格式,进行设置