C语言产生随机数(伪)

C语言的获取随机数的函数为rand(), 可以获得一个非负整数的随机数。要调用rand需要引用头文件stdlib.h
要让随机数限定在一个范围,可以采用模除加加法的方式。
要产生随机数r, 其范围为 m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理为,对于任意数,
0 <= rand()%(n-m+1) <= n-m

(即rand()%(n-m+1)生成的随机数是在0到n-m之间的)

于是
0+m <= rand()%(n-m+1)+m <= n-m+m

(于是给这个随机数加上m就可以得到m到n-m之间的随机数)


m<=rand()%(n-m+1)+m<=n

示例代码

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
void main()   //生成7个在77-100之间的随机数
{
 int random, i;
 srand(time(NULL));
 for(i=0; i<7; ++i)
 {
  random = rand() % 34 + 77;
  cout<<random<<" ";
 }
}

原文地址:https://www.cnblogs.com/area-h-p/p/9931666.html

时间: 2024-10-30 04:35:38

C语言产生随机数(伪)的相关文章

C语言生产随机数的方法

尽管在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字的重复率很低,以至于它们看起来是随机的.实现这一功能的程序叫做伪随机数发生器.有关如何产生随机数的理论有许多,这里不讨论这些理论及相关的数学知识.因为讨论这一主题需要整整一本书的篇幅.这里要说的是,不管你用什么办法实现随机数发生器,你都必须给它提供一个被称为"种子(seed)"的初始值,而且这个值最好是随机的,或者至少是伪随机的."种子"的值通常是用快速计数寄存器或移位寄存器来生成的.本文中,笔者将

C语言中随机数相关问题

用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand(unsigned int seed); //为rand设置"种子"的值 srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的.通常的做法是以这样一句代码: srand((unsigned)time(NULL)); 来取

用c语言产生随机数的方法

用c语言产生随机数的方法 一. //************************************ 伪随机数 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数. rand(产生随机数)表头 #include<stdlib.h>定义函数 int rand(void)函数说明rand()会返

【编程开发】C语言中随机数rand使用注意事项

[编程开发]C语言中随机数rand使用注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:随机数在编程开发中非常重要,以C语言中的rand函数为例,使用时需要注意随机数的随机体现在哪里,比如是程序在不同的时刻执行时,相同位置的随机数是否需要一样,还是要每次执行生成的随机数也要不一样,等等,这些都是需要加以关注的地方. 经测试,发现,在不使用srand这个随机数种子的情况下:每次运行生成的随机数都是一样的.有的时候是需要这样子的,当然可以直接使

各种语言产生随机数的方法

C/C++: 1 /* 2 c++中不能用random 3 rand()返回0--RAND_MAX之间均匀分布的伪随机整数, 4 rand()不接收参数,随机数生成器总以相同的种子开始,默认以1为种子 5 srand()可以指定不同的数为种子, 6 RAND_MAX等于32767 7 */ 8 const int MAX(100); 9 srand((unsigned)time(NULL));//一个以当前时间开始的随机种子,应该放在循环语句前面 10 for (int i = 0; i !=

c语言产生随机数的方法

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a). 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,

c语言产生随机数

#include <stdio.h> #include <time.h>//time的头文件 #include <stdlib.h>//rand的头文件 int main() { srand((int)time(NULL));//设种子 for(int i=0;i<10;i++) { int num=rand()%100+1;//产生1-100之间的数 printf("%d ",num); } return 0; } ........ 这是两次

C语言之随机数和字符串输入输出

一.随机数产生函数 1.需要加入头文件 #include<stdlib.h> 和 #include<time.h> 2.Rand是伪随机数产生器,每次调用rand产生的随机数是一样的. 3.如果调用rand之前先调用srand就可以出现任意的随机数. 4.只要能保证每次调用srand函数的时候,参数的值是不同的,那么rand函数就一定会产生不同的随机数. 5.实例: int main(void) { int t = (int)time(NULL); srand(t); //随机数种

C语言 产生随机数

rand()函数 #include <stdlib.h> int rand(void); rand()是根据某个种子,以特定的算法,计算出一系列数的函数.返回的数在0和RAND_MAX之间.RAND_MAX定义在stdlib.h中,至少是32767. 然而,这生成的是伪随机数,因为种子在计算机开机后就设定好了,所以这一系列数都是可预测的,每次得出的数列都是相等的.想要得到真正的随机数,必须重新设定这个种子. srand()函数 #include <stdlib.h> void sr