产生[a,b]以及[c,d]间的随机数
来源:互联网 发布:螺旋箍筋的算法 编辑:程序博客网 时间:2024/05/22 14:36
有时,需要的随机数并不是在一个连续的范围内的,而是类似于[a,b]和[c,d]间取值,或者是产生一定数量的不重复的整数。
本文的方法便是建立一定的数组,用rand()产生的数值作为数组的下标,再将所得数据与数组最后一个数值进行交换,然后将rand()的范围上限减1,
比如产生[1,50]间不重复的5个随机数,先产生1个[0,49]随机数n,根据随机数n取出a[n]的数并将之与a[49]相交换,再产生一个[0,48]的随机数,依次类推
# include# include # include # define SWAP(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y)int main(){int num_rand = 5;int nRand[5];int num_sum = 50;int num[50];int k = 0;int num_begin = 1;int num_end = 50;for(int i=0;i
但使用上述方法会使函数有一定的局限性,故本文需要使用动态分配的内存来提高函数的随机性。
# include# include # include # define SWAP(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y)void wf_rand(int,int,int,int**);int main(){int num_rand = 5;int num_begin = 1;int num_end = 50;int *pRand;wf_rand(num_begin,num_end,num_rand,&pRand);for(int i=0;i
因为代码里的函数使用了malloc来分配内存,故本函数使用需要考虑动态内存的释放。而[a,b]与[c,d]间的随机数便可通过对上述函数进行一定的修改便可实现。
如:
bool wf_rand(int set[],int set_len, int result[],int result_len,int flag){if (0!=(set_len%2)){printf("This module need a even number\n");return 1;}int num_data = 0;int data_num = 0;int rand_num = 0;int tmp = 0;for(int i=0;i
阅读全文
0 0
- 产生[a,b]以及[c,d]间的随机数
- 产生a到b的随机数
- 产生a到b之间均匀分布的随机数
- 产生一个随机数的函数 范围[a,b]
- c中time函数的用法以及随机数的产生
- c中time函数的用法以及随机数的产生
- a+++b+c+++d++
- a/b + c/d
- C语言随机数的产生
- C#中随机数的产生
- C语言随机数的产生
- C/C++随机数的产生
- C语言随机数的产生
- Objective-C中取a-b之间的随机数方法
- HDUOJ2503 a/b + c/d
- 翡翠 A, B, C, D
- HDU2503:a/b + c/d
- unsigned a,b,c,d;
- 【C++】C++的输入输出、循环、条件、字符串、数组、类、继承的使用实例
- jquery初体验—pc和移动端拖拽排序(拼图)效果(兼容不完善)
- 菜鸟的机器学习之路
- 按钮实现显示正在查询的效果:
- 折半DFS+MAP
- 产生[a,b]以及[c,d]间的随机数
- gdb区分程序是debug还是release版
- Rightmost Digit(快速幂)
- 木棒
- 【C++】运算符重载
- Angular学习笔记(二)
- MYSQL报错2003以及10061错误原因排查
- jQuery Mobile入门学习(2)
- 【C++】文件的读取与写入