谁能给我解释一下#define RANDOM(a,b) (rand()%(b+1)-(a)+(a))

C语言定义宏取随机数

C++中rand()范围[0,RAND_MAX],注意是闭区间。我的机器上的RAND_MAX是32767。.
1.生成整数随机数,a b均为整数,且a<b
[a,b)---rand()%(b-a)+a
[a,b] ---rand()%(b-a+1)+a
(a,b) ---rand()%(b-a-1)+a+1
[a,b) ---rand()%(b-a)+a+1
记住一点:rand()%(b-a)+a生成的[a,b)间的整数,根据[a,b]=[a,b+1),(a,b)=[a+1,b),(a,b]=[a+1,b+1),就能推导出上面的结果了。
2 生成浮点数随机数,a b为整数或浮点数,且a<b
[0,1]---rand()*1.0/RAND_MAX
[a,b]---rand()*1.0/RAND_MAX*(b-a)+a
[a,b)---rand()*1.0/(RAND_MAX+1)*(b-a)+a
(a,b]---(rand()+1)*1.0/(RAND_MAX+1)*(b-a)+a
(a,b)---(rand()+1)*1.0/(RAND_MAX+2)*(b-a)+a
同样,要记住[0,1]的计算方法和rand()的范围[0,RAND_MAX]就能推导出上述结果。
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言问题:要用到rand和srand函数。题目如下:
define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))define N 30 void main(){ int i=0, j, cnt=0;int buf[N];\/\/用当前时间初始化随机数种子 srand( (unsigned)time(NULL) );\/\/生成N个不相同的随机数 while( i<N ){ int r = RANDOM(0,100); \/\/生成[0-100]区间的...

用C语言编写一个程序:
define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))\/\/产生 1-20 的整数,如要改变算术范围,则修改这个宏的参数即可 define GEN_VALUE() RANDOM(1, 20)void main(){ int v1, v2, t, r, a;char op, ops[] = { '+', '-', '*', '\/' };srand( (unsigned)time(N...

(1) 编写一个函数,能返回一个数组,其中包含随机生成的10个两位数(区间...
\/\/这东西很简单,根本谈不上什么思路,直接看代码里的注释 include <stdio.h> include <stdlib.h> include <time.h> \/\/产生 [a,b] 区间的随机数 define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))define NUMBER 10 \/\/产生num个[10,99]区间的随机数写入buffer void gen_random...

怎样在C++中产生10个30~100的随机数
define random(a,b) (rand()%(b-a+1)+a)using namespace std;int main(){srand((int)time(0)); \/\/ 产生随机种子 把0换成NULL也行for (int i = 0; i < 30; i++){cout << random(30, 100) << " ";} return 0;} rand()会返回一随机数值, 范围在0至RAND_MAX 间。

C语言 rand()函数
产生整数rand的原理是:y=ax+b(mod n)其中,n一般是一个很大的素数。a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x,它被称为seed。每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话, 虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的...

c语言中#define random(x)(rand()%x);是什么意思???
生成一个小于x的随机数。rand()函数生成一个无符号型的随机数,然后模x,即结果为0到x内的一个随机数 ,然后将这个值赋给random(x)

随机函数相关问题?
Randomize for a=1 to 6 cells(1,a)=rnd next a 这是一个产生6个随机数的例子,如果前面没有Randomize时每次打开工作簿会产生同一个6个数的数列,那么加了Randomize(在For语句前)后,那这6个数之间的排列关系(注意:不是指这6个数的数值本身,数值本身应该是变的)是不是还是没变呢?如果...

随机数函数如何使用
(1)生成随机数比较简单,=rand()即可生成0-RAND_MAX之间的随机数;(#define RAND_MAX 0x7fffu)(2)如果要是整数,就用=int(rand()%10),表示0至9的整数,以此类推;(3)如果要生成a与b之间的随机实数,就用=rand()%(b-a+1)+a,就能产生固定位数的整数了,以此类推;注意:如果要使用函数...

VB中随机函数的公式是什么
Visual Basic中随机函数 格式:Rnd(<数值表达式>)功能:求[0,1)之间的一个随机数 语法: Rnd[(number)]如果 number 的值是 Randomize 生成 小于 0 ,每次都使用 number 作为随机数种子得到的相同结果。大于 0 ,以上一个随机数为种子产生下一个随机数。等于 0 ,产生与最近生成的随机数相同的随机...

#DEFINE FRAND (((float)rand()-(float)rand())\/RAND_MAX)什么含义
两个随机数的差除以RAND_MAX,代表一个随机的浮点数吧。

相似回答