随机生成一个连续数的序列
2012-02-22 15:48
218 查看
最近,在编写自己呃数独游戏过程中,遇到需要生成一些随机但连续的数字序列的需求。当时,为了尽快实现功能,临时写了一个凑合着用。
现在有时间,写一个通用的,生成随机但连续数的序列的函数,当然原理很简单。
这段代码的逻辑是通过rand()方法,不断地生成随机数,从而生成一个不重复的随机序列,每找到一个合适的数字后,将该数字的Selected字段标记为true,这样,下次再找它的时候,就直接跳过。
现在有时间,写一个通用的,生成随机但连续数的序列的函数,当然原理很简单。
// generate a random number list length of which is size; // the range of numbers is 0 to size-1; bool CreateRandomSequenceNumbers(int size, int* randomSequence) { if ( size <= 0 || (randomSequence == NULL)) { return false; } srand(::GetTickCount() % 100); struct RandomNumbers { int Value; bool Selected; }; // check status RandomNumbers* tempValidList = new RandomNumbers[size]; for (int i=0; i<size; i++) { tempValidList[i].Value = i; tempValidList[i].Selected = false; } int leftCount = size; int validIndex = 0; while(leftCount > 0) { int target = rand() % leftCount; int flag = 0; for (int i=0; i<size; i++) { if (tempValidList[i].Selected) { continue; } if (flag == target) { randomSequence[validIndex++] = tempValidList[i].Value; tempValidList[i].Selected = true; leftCount--; break; } flag++; } } delete[] tempValidList; }
这段代码的逻辑是通过rand()方法,不断地生成随机数,从而生成一个不重复的随机序列,每找到一个合适的数字后,将该数字的Selected字段标记为true,这样,下次再找它的时候,就直接跳过。
相关文章推荐
- perl 指定长度并生成一个随机的DNA序列的脚本代码
- mysql生成一个连续的时间序列
- 算法 - 有一个连续整数序列,里面随机存放的是0到99这100个不重复的整数,要求对该序列排序。
- 指定长度,生成一个随机的DNA序列
- 彩票系统:用户输入一个数,再随机生成一个数,判断两个数是否相等,如果相等,恭喜中奖了
- Ping命令序列生成的一个方法
- 编写一个生成随机字符串的方法,参数接收长度,字符串中可能含有大写字母、 小写字母和数字。
- 随机生成一个n bit位的长整数
- 细聊分布式ID生成方法的实现(一个可以使用10年的序列生成器)
- 基础算法测试——生成一个1-10之间的随机整数组合
- 一个序列号的生成(可以运用于很多需要序列编号的系统中)
- freemarker定义一个连续的序列
- 生成前N个整数的一个随机置换java实现
- 生成前N个自然数的一个随机置换
- 如何生成任意给定区间的随机值序列
- 生成Poisson泊松随机序列的代码
- excel怎么一次性生成10万个6位连续数 和 随机6位数
- 随机生成验证码图片并将之输出为一个png文件。
- (学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
- Python3 生成一个随机验证码