用C语言产生随机数
- 格式:doc
- 大小:39.50 KB
- 文档页数:11
16位随机数 c语言
在C语言中生成16位随机数可以使用标准库中的rand函数。
下面是一个简单的示例代码:
c.
#include <stdio.h>。
#include <stdlib.h>。
#include <time.h>。
int main() {。
int i;
int randomNum;
srand((unsigned)time(NULL)); // 使用当前时间作为种子。
for (i = 0; i < 16; i++) {。
randomNum = rand() % 10; // 生成0到9的随机数。
printf("%d", randomNum);
}。
return 0;
}。
在这个示例中,我们使用了srand函数来设置随机数生成器的
种子,以确保每次运行程序时都会得到不同的随机数序列。
然后使
用for循环生成16个0到9之间的随机数,并将其打印出来。
需要注意的是,这里生成的16位随机数是由0到9组成的数字
序列,并不是一个真正意义上的16位整数。
如果需要生成真正意义
上的16位随机整数,可以使用更复杂的算法来实现,或者将多次生
成的随机数拼接起来。
cmodel随机数产生的几种方法CModel是一个常用的C++库,其中包含了许多随机数生成函数,可以用于模拟随机事件或生成随机数据。
本文将介绍几种常用的CModel随机数产生方法。
一、使用rand函数生成随机数rand函数是C语言中最常用的随机数生成函数之一。
它可以生成一个范围在0到RAND_MAX之间的整数。
要生成一个特定范围内的随机数,可以通过取余运算来实现。
```cpp#include <iostream>#include <cstdlib>#include <ctime>int main() {// 设置种子,使每次运行生成的随机数不同srand(time(0));// 生成0到9之间的随机数int randomNum = rand() % 10;std::cout << "随机数:" << randomNum << std::endl;return 0;}```二、使用CModel中的随机数生成函数CModel库中提供了更多的随机数生成函数,可以生成不同类型的随机数,如整数、浮点数和布尔值等。
```cpp#include <iostream>#include <random>#include <ctime>int main() {// 设置种子,使每次运行生成的随机数不同std::mt19937 rng(time(0));// 生成0到9之间的随机整数std::uniform_int_distribution<int> dist(0, 9);int randomNum = dist(rng);std::cout << "随机数:" << randomNum << std::endl;// 生成0到1之间的随机浮点数std::uniform_real_distribution<double> dist2(0, 1);double randomFloat = dist2(rng);std::cout << "随机浮点数:" << randomFloat << std::endl; // 生成布尔值std::bernoulli_distribution dist3(0.5);bool randomBool = dist3(rng);std::cout << "随机布尔值:" << randomBool << std::endl;return 0;}```三、使用随机数生成器类除了使用函数的方式生成随机数,CModel还提供了随机数生成器类,可以更方便地生成随机数。
C语⾔中如何产⽣随机数今天看到⼀段⼩程序,⾥⾯⽤到随机数。
才发现在C语⾔中产⽣随机数不像matlab中那么简单。
C中也有rand()函数,但是rand()函数产⽣的数不是真正意义上的随机数,是⼀个伪随机数,是根据⼀个数,我们称它为种⼦,为基准以某个递推公式推算出来的⼀系列数。
范围在0~RAND_MAX之间。
RAND_MAX和rand()⼀样也定义在stdlib.h中,其值⾄少为32767。
当计算机正常开机后,种⼦是固定了的。
所以如果不结合其他函数,使⽤rand()产⽣随机数就会出现以下情况:1 #include<stdlib.h>2int main()3 {4int i,j;5for(i=0;i<10;i++)6 {7 j=1+(int)(rand()%10);8 printf("%d",j);9 }10 }你会发现程序连续执⾏N次的结果是⼀样的,这是因为如果未设置随机数种⼦,rand()在调⽤时会默认随机数种⼦为1。
为了解决这个问题C 提供了srand()函数。
所以在调⽤rand()产⽣随机数之前必须调⽤srand()设置种⼦。
srand()的原形是void srand(int a)。
下⾯结合srand()的使⽤我们编写⼀个产⽣随机数的程序:#include<stdio.h>#include<stdlib.h>#include<time.h>int main(){srand((int)time(0));int i;for (i=0;i<!0;i++){printf("%d ",(int)(rand()%10));}printf("\n");}root@ubuntu:/home/qj/python_pro# ./test5623861980root@ubuntu:/home/qj/python_pro# ./test5617609802root@ubuntu:/home/qj/python_pro# ./test1162616510root@ubuntu:/home/qj/python_pro# ./test9403078701root@ubuntu:/home/qj/python_pro# ./test8215402952root@ubuntu:/home/qj/python_pro# ./test6196826211root@ubuntu:/home/qj/python_pro# ./test2104089072root@ubuntu:/home/qj/python_pro# ./test7493176410root@ubuntu:/home/qj/python_pro# ./test4811126330root@ubuntu:/home/qj/python_pro#其中time()⽤来获得机器时间,它定义在time.h中。
随机数程序c语言随机数程序是计算机程序设计中常用的一种程序,它可以生成一定范围内的随机数。
在C语言中,我们可以使用rand()函数来生成随机数。
rand()函数是C语言中的一个标准库函数,它的作用是生成一个0到RAND_MAX之间的随机整数。
RAND_MAX是一个常量,它表示随机数的最大值。
在大多数系统中,RAND_MAX的值为32767。
为了生成一个指定范围内的随机数,我们可以使用以下公式:rand() % (max - min + 1) + min其中,max和min分别表示随机数的最大值和最小值。
这个公式的意思是,先生成一个0到max-min之间的随机整数,然后再加上min,就可以得到一个min到max之间的随机整数。
下面是一个简单的随机数程序示例:#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){int max, min, num;srand(time(NULL)); // 初始化随机数种子printf("请输入随机数的最大值和最小值:");scanf("%d %d", &max, &min);num = rand() % (max - min + 1) + min;printf("生成的随机数为:%d\n", num);return 0;}在这个程序中,我们使用了srand()函数来初始化随机数种子。
这个函数需要传入一个参数,通常我们使用time(NULL)来获取当前时间作为种子,以保证每次运行程序生成的随机数都是不同的。
然后,我们通过scanf()函数获取用户输入的随机数的最大值和最小值。
接着,使用rand()函数和上面提到的公式生成一个指定范围内的随机整数,并将其输出到屏幕上。
需要注意的是,由于rand()函数生成的随机数是伪随机数,也就是说它们并不是真正的随机数,而是通过一定的算法生成的。
用c语言产生随机数在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。
rand()会返回一随机数值,范围在0至RAND_MAX 间。
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在,(其值至少为32767),运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
一般用for语句来设置种子的个数。
具体见下面的例子。
一如何产生不可预见的随机序列呢利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。
它们就是rand()和srand()函数。
这二个函数的工作过程如下:1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)3) 根据需要多次调用rand(),从而不间断地得到新的随机数;4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
C语言如何产生随机数1. 基本函数int rand(void);void srand (unsigned int n);#include <stdlib.h>2. 使用方法rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。
RAND_MAX常量被定义在stdlib.h头文件中。
其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。
只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。
因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。
如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
for (int i=0; i<10; i++){printf("%d ", rand()%10);}每次运行都将输出:1 7 4 0 9 4 8 8 2 4srand(1);for (int i=0; i<10; i++){printf("%d ", rand()%10);}每次运行都将输出:1 7 4 0 9 4 8 8 2 4例2的输出结果与例1是完全一样的。
srand(8);for (int i=0; i<10; i++){printf("%d ", rand()%10);}每次运行都将输出:4 0 1 3 5 3 7 7 1 5该程序取得的随机值也是在[0,10)之间,与srand(1)所取得的值不同,但是每次运行程序的结果都相同。
srand((unsigned)time(NULL));for (int i=0; i<10; i++){printf("%d ", rand()%10);}该程序每次运行结果都不一样,因为每次启动程序的时间都不同。
C语言中产生随机数的方法1. 使用rand(函数:C语言中的rand(函数是一个伪随机数生成函数,它可以产生一个0到RAND_MAX之间的随机整数。
要使用rand(函数,我们需要包含<stdlib.h>头文件,并调用srand(函数来初始化随机数种子。
以下是使用rand(函数生成随机数的示例代码:#include <stdio.h>#include <stdlib.h>int maiint i;for (i = 0; i < 10; i++)printf("%d\n", rand();}return 0;上述代码使用循环生成10个随机数,并使用printf(函数打印出来。
注意,每次运行程序时生成的随机数都是不同的,因为随机数种子是根据当前时间生成的。
2. 使用srand(函数:srand(函数用于设置rand(函数的随机数种子。
我们通常将时间作为种子来产生不同的随机数序列。
以下是使用srand(函数产生随机数的示例代码:#include <stdio.h>#include <stdlib.h>int maiint i;for (i = 0; i < 10; i++)printf("%d\n", rand( % 10); // 生成0到9之间的随机数}return 0;上述代码生成了10个0到9之间的随机数,并使用printf(函数打印出来。
我们使用rand(函数与模运算来产生特定范围内的随机数。
#include <stdio.h>#include <stdlib.h>int maiint i, num;for (i = 0; i < 10; i++)num = rand( % 100 + 1; // 生成1到100之间的随机数printf("%d\n", num);sleep(1); // 暂停1秒钟}return 0;上述代码生成了10个1到100之间的随机数,并使用printf(函数打印出来。
C语言中的随机数作者:王璐随机数,顾名思义就是随机产生的、无规则的数。
在编程中,有时我们不想手动从键盘输入数据,而想让电脑自动产生一些数据供我们使用(例如生成100个两位数),就要用到随机数。
随机数的生成方法很简单,在C语言中,我们通过调用随机函数rand()来产生随机数。
rand函数是C语言的标准库函数,和我们常用的输入输出函数(scanf和printf)一样可以在程序中直接调用。
rand函数的用法如下:首先在程序开头预处理命令部分加上#include<stdlib.h>,其中<stdlib.h>是C中的标准库头文件,我们在用rand函数时需要用到这个头文件 [注1]。
它的作用是为了对rand()函数进行引用性声明,以便在下面的程序中使用它。
这和我们在用到scanf和printf函数时需要在程序开头写上#include<stdio.h>(标准输入/输出头文件)是一样的。
随机函数rand使用的格式为:A=rand()%x+y;这条语句的意思是,自动产生一个以y为下限,以x+y为上限的随机数,并把值赋给A。
即A为y到x+y之间的随机数。
例如,有语句:int a;a=rand()%89+10;执行该语句后,a即可得到一个10~100之间的整数赋值。
注意区别于:a=rand()%100;执行这条语句,a可能取值的上限同样为100,但下限为0,a可以取到10以下的数。
相当于:a=rand()%100+0;下面我们来看一个完整的例子:[eg.1]输入10个两位数,并把他们的和打印出来。
1.从键盘输入数据:#include<stdio.h>void main(){int a[10],sum=0;int i;printf("请输入10个2位数:\n");for(i=0;i<10;i++){scanf("%d",&a[i]);sum=sum+a[i];}printf("\n");printf("这10个数的和是:%d \n",sum);}运行结果:2.使用随机数:#include<stdio.h>#include<stdlib.h>void main(){int a[10],sum=0;int i;printf("系统自动生成随机数:\n");for(i=0;i<10;i++){a[i]=rand()%89+10; /* a从10-99之间取值,即a是两位数 */printf("%d ",a[i]);sum=sum+a[i];}printf("\n");printf("这10个两位数的和是:%d \n",sum);}运行结果:经运行比较后可以感觉到,使用随机数可以简化程序运行,方便人的工作。
c语言10以内随机数简单方法标题:C语言实现10以内随机数生成的简单方法在编程学习的过程中,生成随机数是一项非常基础且实用的技能。
C语言作为一门广泛应用的编程语言,其生成随机数的功能也非常强大。
本文将介绍一种在C语言中生成10以内随机数的简单方法。
以下是实现10以内随机数生成的步骤和代码示例:### 1.引入头文件在C语言中,生成随机数需要使用`stdlib.h`头文件中的`rand()`函数。
首先,确保引入了该头文件。
```c#include <stdio.h>#include <stdlib.h>#include <time.h>```### 2.设置随机数种子为了让`rand()`函数每次运行时生成的随机数不同,需要设置随机数种子。
可以使用当前时间作为种子。
```csrand((unsigned)time(NULL));```### 3.生成随机数由于`rand()`函数默认生成的是0到RAND_MAX之间的整数,RAND_MAX至少为32767。
为了生成10以内的随机数,可以使用取模运算。
```cint randomNumber = rand() % 10;```### 4.完整代码示例将上述步骤结合起来,以下是生成10以内随机数的完整C语言代码示例:```c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {// 设置随机数种子srand((unsigned)time(NULL));// 生成10以内的随机数int randomNumber = rand() % 10;// 输出随机数printf("生成的10以内随机数是:%d", randomNumber);return 0;}```### 5.注意事项- `rand()`函数生成的随机数在每次程序运行时是固定的,除非每次运行前都重新设置随机数种子。
随机数的产生方法瑞达路水瓶酒窝哥由于老师布置了产生随机数的作业,要求编一个程序能够产生0000到9999总共10000个不重复的随机数,可能大家在网上看了一些方法,都用了函数Rand与Brand的结合,可以产生10000个随机数,并且大家都是用公式(rand() % (b-a))+ a来约束产生随机数的范围和个数的,但是大家几乎忘了不能重复的要求,所以产生的随机数是有很多重复的,不能满足要求,鉴于这种情况,我把大众化随机数的产生方法以及自己的一点改进措施与大家共享如下:一、可重复随机数的产生方法:我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。
但是有一个函数srand()可以初始化这个种子函数。
1、函数rand()用法:说明:rand是包含在头文件stdlib.h中,跟stdio.h是一个道理,具体运用方法如下:代码:# include "stdio.h"# include "stdlib.h"int main(){int k;k=rand();printf("%d",k);return 0;}程序在编译软件中的运行截图过程如下:当运行这个程序时,我们会发现,产生的随机数永远都是一个值,例如我的电脑是41,这是因为计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。
(注意:小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。
)rand()返回一随机数值的范围在0至RAND_MAX 间。
c语言rand函数生成范围1到10的随机数如何使用C语言的rand函数生成范围在1到10之间的随机数在C语言中,使用rand函数可以生成伪随机数。
但是,rand函数默认情况下生成的随机数范围是0到RAND_MAX,其中RAND_MAX是一个宏定义,表示最大的随机数。
为了生成1到10之间的随机数,我们需要对rand函数的返回值进行处理。
下面是一个一步一步的解释,介绍如何使用C语言的rand函数生成1到10之间的随机数。
步骤1:包含必要的头文件为了使用rand函数,我们需要包含stdlib.h头文件。
在程序的开头添加以下代码:#include <stdlib.h>这样,我们就能够在程序中使用rand函数了。
步骤2:设置随机数种子在生成随机数之前,我们需要设置一个随机数种子。
随机数种子的作用是为了确保每次运行程序时都会生成不同的随机数序列。
可以使用time函数作为随机数种子,以当前时间作为种子。
在程序的开头的main函数之前添加以下代码:srand(time(0));步骤3:生成随机数要生成1到10之间的随机数,我们可以利用rand函数生成0到RAND_MAX之间的随机数,然后通过一些数学运算将其映射到1到10之间。
首先,我们需要计算生成1到10之间的数字的个数,即10-1+1=10。
然后,我们可以生成0到9之间的随机数,并将其加上1,即可得到1到10之间的随机数。
具体的代码如下:int randomNumber = rand() % 10 + 1;这行代码会生成0到9之间的随机数,并将其加上1。
步骤4:测试生成的随机数为了验证我们生成的随机数确实在1到10之间,我们可以将生成的随机数打印出来。
在main函数内添加以下代码:printf("随机数:%d\n", randomNumber);步骤5:完整代码示例下面是一个完整的示例代码,演示如何使用rand函数生成1到10之间的随机数:c#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {srand(time(0));int randomNumber = rand() % 10 + 1;printf("随机数:%d\n", randomNumber);return 0;}通过以上步骤,我们成功生成了一个范围在1到10之间的随机数。
c语言随机函数在C语言中,要生成随机数可以使用标准库函数rand(。
但是在使用该函数之前,我们需要借助srand(函数来初始化随机数种子。
下面是一个使用随机函数的例子:```c#include <stdio.h>#include <stdlib.h>int maiint i, randomNum;//初始化随机数种子//生成随机数并打印for (i = 0; i < 10; i++)randomNum = rand( % 100; //生成0到99的随机数printf("%d\n", randomNum);}return 0;```接下来我们使用rand(函数生成了10个0到99之间的随机数,并将其打印出来。
运行程序,可以看到每次运行时打印的随机数都是不同的。
需要注意的是,rand(函数生成的随机数是伪随机数,即生成的数列在给定的种子下是确定的。
所以在每次运行程序时,我们都需要通过srand(函数来重新初始化随机数种子,以确保生成的随机数更加随机。
此外,通过对rand(函数的返回值取模,可以控制生成的随机数的范围。
在上面的例子中,我们使用rand( % 100来生成一个0到99之间的随机数。
除了上面的例子,我们也可以通过随机数来生成随机的数组。
下面是一个随机生成数组并打印的例子:```c#include <stdio.h>#include <stdlib.h>#define SIZE 10int maiint i;int array[SIZE];//初始化随机数种子//生成随机数组for (i = 0; i < SIZE; i++)array[i] = rand( % 100; //生成0到99的随机数}//打印随机数组for (i = 0; i < SIZE; i++)printf("%d\n", array[i]);}return 0;```上述代码中,我们首先定义了一个大小为10的整型数组array。
c语言随机数生成方法C语言是一门广泛应用于计算机编程领域的高级编程语言,其强大的功能和灵活性使其成为了许多程序员的首选语言。
在C语言中,随机数生成是一个非常常见的需求,本文将介绍C语言中随机数生成的方法。
C语言中的随机数生成函数是rand(),该函数可以生成一个0到RAND_MAX之间的随机整数。
但是,如果我们需要生成一个指定范围内的随机数,该怎么办呢?下面是一些常用的方法:1. 生成0到n之间的随机整数要生成0到n之间的随机整数,我们可以使用rand()函数和取模运算符%。
具体方法如下:int random_num = rand() % (n + 1);这里的n是我们需要生成的最大整数,加1是为了保证生成的随机数不会超过n。
2. 生成m到n之间的随机整数如果我们需要生成m到n之间的随机整数,我们可以使用rand()函数和取模运算符%。
具体方法如下:int random_num = rand() % (n - m + 1) + m;这里的m和n分别是我们需要生成的最小整数和最大整数,n-m+1是为了保证生成的随机数不会超过n,再加上m是为了保证生成的随机数不会小于m。
3. 生成0到1之间的随机小数要生成0到1之间的随机小数,我们可以使用rand()函数和类型转换。
具体方法如下:double random_num = (double)rand() / RAND_MAX;这里的RAND_MAX是一个常量,表示rand()函数能够生成的最大整数。
我们将rand()函数生成的整数转换成double类型,再除以RAND_MAX,就可以得到0到1之间的随机小数。
4. 生成m到n之间的随机小数如果我们需要生成m到n之间的随机小数,我们可以使用rand()函数和类型转换。
具体方法如下:double random_num = (double)rand() / ((double)RAND_MAX / (n - m)) + m;这里的m和n分别是我们需要生成的最小数和最大数,RAND_MAX 是一个常量,表示rand()函数能够生成的最大整数。
用c语言产生随机数在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。
rand()会返回一随机数值,围在0至RAND_MAX 间。
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767),运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。
在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
一般用for语句来设置种子的个数。
具体见下面的例子。
一如何产生不可预见的随机序列呢利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。
它们就是rand()和srand()函数。
这二个函数的工作过程如下:1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值围从0~65535;2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)3) 根据需要多次调用rand(),从而不间断地得到新的随机数;4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
下面是0~32767之间的随机数程序:#include <stdlib.h>#include <stdio.h>#include <time.h> //使用当前时钟做种子void main( void ){int i;srand( (unsigned)time( NULL ) ); //初始化随机数for( i = 0; i < 10;i++ ) //打印出10个随机数printf( " %d\n", rand() );}根据上面的程序可以很容易得到0~1之间的随机数:#include <stdlib.h>#include <stdio.h>#include <time.h>main( ){int i;srand( (unsigned)time( NULL ) );for( i = 0; i < 10;i++ )printf( "%5.2f\n", rand()/32767.0); }而产生1~100之间的随机数可以这样写:#include <stdlib.h>#include <stdio.h>#include <time.h>main( ){int i;srand( (unsigned)time( NULL ) );for( i = 0; i < 10;i++ )printf( "%d\n", rand()%100+1);}二,三个通用的随机数发生器,推荐用第三个函数名: rand功能: 随机数发生器用法: void rand(void);程序例:#include <stdlib.h>#include <stdio.h>int main(void){int i;printf("Ten random numbers from 0 to 99\n\n");for(i=0; i<10; i++)printf("%d\n", rand() % 100);return 0;}函数名: random功能: 随机数发生器用法: int random(int num);程序例:#include <stdlib.h>#include <stdio.h>#include <time.h>/* prints a random number in the range 0 to 99 */ int main(void){randomize();printf("Random number in the 0-99 range: %d\n", random (100));return 0;}函数名: randomize 这个比较好!功能: 初始化随机数发生器用法: void randomize(void);程序例:#include <stdlib.h>#include <stdio.h>#include <time.h>int main(void){int i;randomize();printf("Ten random numbers from 0 to 99\n\n");for(i=0; i<10; i++)printf("%d\n", rand() % 100);return 0;}在《计算机常用算法》中有介绍随机数的生成算法三如何产生设定围的随机数由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:k=rand()%(Y-X+1)+X;这样,就可以产生你想要的任何围的随机数了。
四,产生不重复的随机数1)#include <stdlib.h>#include <stdio.h>#include<stdio.h>#include <time.h>swap(int *pm,int *pn) /*必须用指针进行交换*/{int temp;temp=*pm;*pm=*pn;*pn=temp;}int main(void){int i,a[513];/*int *pa,*pb;*/srand( (unsigned)time( NULL ) ); /*定义这个可以产生不同的随机数*/for(i=1; i<=512; i++){a[i]=i;printf("%4d",a[i]);}for(i=512; i>=1; i--){/* pa=&a[i]; pb=&a[rand()%i+1];*/swap(&a[i], &a[rand()%i+1]); /*加一是从一到i的随机,就不会包含0*//*不用再定义指针,这样结论是一样的*/}printf("\n") ;for(i=1; i<=64; i++)printf("%4d",a[i] );getch(); /*wintc的输出*/}2)#include <stdlib.h>#include <stdio.h>#include<stdio.h>int main(void){int a[100]={0}; int i,m;for(i=1; i<=99; ++i)printf("%4d",a[i] );srand( (unsigned)time( NULL ) );or(i=1; i<=99; i++){while(a[m=rand()%100+1]);a[m] = i;}for(i=1; i<=99; ++i)printf("%4d",a[i] );getch();}srand((int)time(NULL));设定随机数种子rand()%100;产生0-99的随机数。
高级点的,假如要产生16-59之间的数,你可以这样写:rand()%44+16(这里44由59-16+1得到)。
其他情况如法炮制!下面是搜回来的:问题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)。