C/C++产生[m, n)之间不重复的随机序
2014-02-22 11:16
225 查看
/* *Rand a Sequence *Author:p.j.gan *Date:2014/2/22 *Complier:vs2010 */ /* *Param: *iMax: the rande data *iLen: the length of the Buffer *pSequenceBuffer: Buffer */ void randSequence(int iMin, int iMax, int iLen, void *pSequenceBuffer) { assert(pSequenceBuffer); int *pn1=new int[iLen+1]; int *pn2=new int[iLen]; int i,tmp; srand((unsigned)time(NULL)); std::memset(pn1, 0, sizeof(int) * (iLen + 1)); for(i=0;i < iLen;i++) { tmp=rand() % iMax + iMin; if(pn1[tmp]==0) { pn2[i]=tmp; pn1[tmp] = -1; }else { --i; } } std::memcpy(pSequenceBuffer, pn2, sizeof(int) * iLen); for(int i = 0; i < iLen; i++) { std::cout<<*((int *)pSequenceBuffer + i)<<" "; } std::cout<<std::endl; // destory the memory if(pn1 != 0) { delete []pn1; pn1 = 0; } if(pn2 != 0) { delete []pn2; pn1 = 0; } }
相关文章推荐
- 产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
- 面试题:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
- 面试题:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
- C#.NET产生在两个值之间的不重复随机数组
- flash中随机产生20-100之间10个不同的数字,然后不能重复地随机取出这十个数字
- 用Java语言产生1~30之间的7个随机整数,且不能重复,并与用户输入的7个数作比较,设置相应的奖项
- 面试题:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
- C++产生m到n之间的随机数,产生0到100之间的随机数,以系统时间作为随机种子
- loner_li 产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复
- 随机产生5个从0到10之间不重复的整数
- 随机产生7个不重复的1-36之间的数。36选7
- C++中的srand(time(null))利用时间设置随机种子产生随机数
- C++实现生成1—10000之间的10000个不重复的随机数
- 随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,如果
- 随机产生1-100之间的20个随机数
- Excel之产生不重复的随机整数
- js随机产生40个60至100之间的不相同的数字存入数组并顺序排序
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。
- Android(安卓)产生0-9不重复随机数组高效方法。
- Java随机产生数组元素并无重复元素方法