问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中获得随机数的方法

发布网友 发布时间:2022-05-01 06:01

我来回答

5个回答

热心网友 时间:2022-06-25 08:07

C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。
(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。
例如:#include<stdio.h>
#include<stdlib.h>
void main()
{
for(int i=0;i<10;i+)
printf("%d\n",rand());
} (2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数:例如:随机生成10个0~100的数:
#include<stdio.h>
#include<stdlib.h>
#define random(x) (rand()%x)

void main()
{
for(int x=0;x<10;x++)
printf("%d\n",random(100));
} (3)但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。srand()函数定义 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值来当做seed
如果你用time(0)的话,要加入头文件#include<time.h>例如:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)

void main()
{ srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d\n",random(100));
}这样两次运行的结果就会不一样了!!

热心网友 时间:2022-06-25 08:07

问题1: 怎样获得一个真正的随机数?要知道,rand()是不能产生真正的随机数的!即使不能产生真正的随机数,也要大概接近呀!而rand()好象每次的随机都一样。

专家解答:

之所以rand()每次的随机数都一样是因为rand()函数使用不正确。各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。这个特性被有的软件利用于加密和解密。加密时,可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时,再利用种子数生成一个伪随机序列并对加密数据进行还原。这样,对于不知道种子数的人要想解密就需要多费些事了。当然,这种完全相同的序列对于你来说是非常糟糕的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。你也可以使用srand函数来人为指定种子数。Windows 9x/NT的游戏FreeCell就允许用户指定种子数,这样用户如果一次游戏没有成功,下次还可以以同样的发牌结果再玩一次。

问题2: 我按照上述方法并不能产生随机数,仅产生公差为3或4的等差数列:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main()
{
for(int i=0;i<100000;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}
专家解答:
你的程序是有问题的,你每产生一个随机数之前,都调用一次srand,而由于计算机运行很快,所以你每次用time得到的时间都是一样的(time的时间精度较低,只有55ms)。这样相当于使用同一个种子产生随机序列,所以产生的随机数总是相同的。你应该把srand放在循环外:
srand( (unsigned)time( NULL ) );
for(int i=0;i<100000;i++)
{
//相关语句
}

热心网友 时间:2022-06-25 08:08

可以使用库函数rand()。
rand声明于stdlib.h,其原型为

int rand(void);
功能为返回一个随机整型值。在C语言中,该值是一个正数值。

在需要限定获取到的随机数范围时,如范围要求为[m,n] m<n且m,n均为整数,可以用
rand()%(n-m+1)+m
的形式进行获取。原理为:
%为取余计算,当%k时,结果是[0,k-1]之间的数值;
于是rand()%(n-m+1) ∈ [0, n-m];
所以rand()%(n-m+1)+m ∈ [0+m, n-m+m]=[m,n]。

热心网友 时间:2022-06-25 08:08

C语言生成随机数需要用到两个函数,一个是srand(),一个是rand(),首先给srand()提供一个种子,unsigned int类型,其取值范围从0~65535,srand()根据这个种子会由一个特定的公式生成一个随机数序列;然后调用rand(),它会依次从这个序列中返回一个数(在0到32767之间),而在不指定srand()种子的情况下,它每次都使用默认的种子,因此生成的序列是同一个,你每次运行,当然就取到相同的数字了。

你可以在程序里添加头文件time.h,用当前时间作为srand的种子,这样就能保证每次运行时都能取到不同的随机数序列。如下:
time_t t;
srand((unsigned) time(&t));
然后就可以用rand()取随机数了。

热心网友 时间:2022-06-25 08:09

在VC中设计到随机数有两个函数

srand() and rand()

srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数

注意

1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数

2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下

如果我们想得到一个 0-60的随机数那么可以写成

int i;

i=rand()%60;

就可以了。

当然最好有个统一的标注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

这样就OK了。
c语言产生随机数

答案:在C语言中,可以使用标准库函数`rand`来产生随机数。这个函数返回一个伪随机数序列。为了获得更好的随机性,通常会结合使用`srand`函数来设置随机数生成的种子。详细解释:1. rand函数的基本使用:`rand`函数是C标准库中的一个函数,它返回一个伪随机数。这个数是一个整数,范围通常是从0到`...

C语言中生成1个0到1的随机数要执行什么语句啊?

C语言中生成1个0到1的随机数可以执行语句:float b=rand()/(RAND_MAX+1.0);解析:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;用函数rand取得的随机数除以(...

C语言怎样产生一定范围的随机数?

在C语言中,可以使用stdlib库中的rand函数来产生随机数,通过结合时间或者特定种子值作为rand函数的参数,可以产生一定范围的随机数。解释如下:使用rand函数产生随机数 C语言中的rand函数可以生成一个伪随机数。这个数通常是一个较大的整数,每次调用rand都会生成一个新的随机数。为了在一个特定范围内生成...

C语言中获得随机数的方法是什么?

可以使用库函数rand()。rand声明于stdlib.h,其原型为 int rand(void);功能为返回一个随机整型值。在C语言中,该值是一个正数值。在需要限定获取到的随机数范围时,如范围要求为[m,n] m&lt;n且m,n均为整数,可以用 rand()%(n-m+1)+m 的形式进行获取。原理为:为取余计算,当%k时,结果是...

c语言中怎样生成随机数?

在C语言中,可以使用stdlib库中的rand函数生成随机数。详细解释如下:一、rand函数的基本用法 C语言中的rand函数可以生成一个伪随机数。这个函数返回一个在0到RAND_MAX之间的整数,其中RAND_MAX是一个在stdlib库中定义的常数,通常是一个相当大的数。使用rand函数的基本语法是:`rand`,调用这个函数会...

c语言,如何产生随机数

1. 引入必要的头文件:在使用`rand`函数之前,需要包含``头文件,因为该函数是定义在这个头文件中的。c include 2. 使用rand函数生成随机数:`rand`函数返回一个伪随机数,这个数的范围是从0到`RAND_MAX`。如果要生成指定范围内的随机数,可以使用取模运算来实现。例如,要生成一个介于1到10之间的...

c语言,如何产生随机数

要产生真正的随机数,首先要确保种子的多样性。在C语言中,正确的方法是在程序开始时设置种子,例如:c include include void main() { srand((unsigned)time(NULL)); // 设置种子,使用当前时间作为随机数源 for(int i = 0; i &lt; 100000; i++) { int random_number = rand() % 100; //...

c语言怎么生成随机数?

你好!完整的代码,红圈处就是从上面100个数字中抽取到的数字:include &lt;stdio.h&gt;#include&lt;stdlib.h&gt; //生成随机数用 #include //利用时间生成种子 #include&lt;math.h&gt; int main(){ int i; int a[100]; srand( time(NULL) ); //生成种子 for(i=0;i&lt;100;i++) ...

C语言中怎样生成随机数?

最好在使用`rand()`之前设置一个随机的种子,例如:`srand((unsigned)time(NULL))`,这里的`time(NULL)`会获取当前系统时间作为种子,确保每次程序运行时随机数序列不同。这样,完整的代码段将如下所示:c int i;srand((unsigned)time(NULL));i = rand() % 60;

随机数表C语言编程产生随机数表

以下是一些C语言生成随机数的例子:1. 生成0~32767之间的随机整数:include include include void main() { int i;srand((unsigned)time(NULL)); // 使用当前时间作为种子 for (i = 0; i &lt; 10; i++) { printf("%d\n", rand());} } 2. 获得0~1之间的浮点随机数:include include i...

c语言中随机数的产生 c语言随机产生随机数 c语言中生成某一范围的随机数 c语言生成一个随机数的函数 c语言产生0到1的随机数 c语言中如何生成随机数 随机数的产生方法 产生随机数的常用方法 C语言随机数生成
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...但现在没在那里上班了…我想取消我的工号怎样做? 不在电信上班取消工号 成语独木难支是什么意思我不知道什么意思 回天之力的反义词 帧数测试用什么软 25岁买重疾险需要体检吗 25岁优先买哪一款重疾险? 25岁买重疾险应该怎么选 ...家养的小兔子抓轻伤,末出血,有没有必要打狂犬疫苗?请专家权威解答... 兵法中略如火,不动如山 java获取随机数的几种方法是什么? java如何获取随机数? 如何用科学计算器取随机数? 如何用计算器来取随机数 如何用科学计算器取随机数 lvw320ssdne9屏参 TCLL32F2800A液晶电视机开机显示四幅有“TCL爱奇艺电视” myeclipse2014怎么hibernate映射文件 玻璃上的石灰水痕迹如何处理 玻璃因为受潮而有痕迹要怎么去除 微信聊天记录撤了我给他发的红包不知道多少了怎么才能找到发多少钱? 304钢种和201钢种混钢的危害? 为什么人不能孵出小鸡? 高锰钢与304不锈钢有什么区别?对人体有什么危害? 在孵小鸡的时候,小鸡究竟是如何破壳的? sus304是食品级不锈钢吗用着对人身体没害处吗 小鸡出壳为什么必须自己啄破蛋壳 非食品级304钢危害到底有多大 小鸡出壳难可以把蛋敲破一点吗? 人工孵化小鸡,小鸡以经形成,为什么不会破壳 C#怎么获取随机数? 如何取随机数? c#怎么取随机数? EXCEL 取随机数 VB中如何取随机数? 国内最好的心理咨询 心理咨询师微信或球球号 谁知道青少年心理咨询官方网站,或官方,谢谢 盐城哪有何首乌买? 荒野乱斗吃鸡地图长几格宽几格? 绝地求生大逃杀地图一个白格子多少米? GTA5和吃鸡的地图,哪个大 绝地求生游戏的岛大约有多大面积? 吃鸡雪地地图最高扣分 绝地求生游戏的地图放到现实中相当于多大? 绝地求生,沙漠地图比海岛大吗? 绝地求生新地图比经典地图大多少? HICANO是什么牌子的手表? 荟萃楼金表是什么牌子 hicano是什么牌子