C语言和java中生成随机数的原理和方法
来源:互联网 发布:顺源it 编辑:程序博客网 时间:2024/06/03 18:59
C语言
一.函数
1:int rand(void)
该函数会产生一个[0,RAND_MAX]的伪随机数,那什么是伪随机数?
相当于一个序列a1-an,第一次使用会返回a1, 第二次使用会返回a2….第n次返回an,这样每次调用rand()都能产生一个不同的数,只要整个序列的规律不明显,整个函数看起来就是随机的。
而这个序列是计算机通过调用srand((int)time(NULL))函数随机产生的。
2:void srand(unsigned seed)
srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成的随机数序列,所以,在相同的平台环境下,不同时间产生的随机数会是不同的。如果该函数的参数是一个常数,那么每次生成的随机数序列都是固定的。
二.函数使用
1.标准使用:
# include <stdio.h># include <stdlib.h># include <time.h>int main(void){ srand((int)time(NULL)); printf("%d\n",RAND_MAX); for(int i = 0; i<5; i++) { printf("%d\n",rand()); } return 0;}
结果:
2:如果你想产生在[0, 32767]范围内的一个范围的随机数,可以这样:
# include <stdio.h># include <stdlib.h># include <time.h>int main(void){ int n; srand((int)time(NULL)); printf("你想生成随机数的最大值是多少?\n"); scanf("%d",&n); for(int i = 0; i<5; i++) { printf("%d\n",rand()%n); } return 0;}
结果:
3.如果你还不满足n的范围,可以这样(缺点:n太大精度不好):
# include <stdio.h># include <stdlib.h># include <time.h>int main(void){ int n; srand((int)time(NULL)); printf("你想生成随机数的最大值是多少?\n"); scanf("%d",&n); for(int i = 0; i<5; i++) { double t =(double)rand()/32767;//产生一个[0,1]内的随机数 double c = t*n;//将他变成你想要的范围 printf("%d\n",(int)c); } return 0;}
结果:
三.注意:
1.srand()函数是用来初始化随机数种子的,种子决定序列,种子相同,序列也就相同,每次产生的随机数也就相同,而且srand()只需要执行一次,不要在程序中多次使用它,防止产生相同的随机数。
2.关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。
3.如果在程序中没有使用srand()函数,那么系统会默认给种子初始为0,所以每次产生的随机数序列都是一样的,这个要注意。
Java
一:函数
1.Math.random()
该函数会默认生成[0,1)内的随机数,注意1不闭合。所以你要产生某一范围内的随机数就要最后加上1.
二:函数的使用
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("你想要的范围最大数:"); java.util.Scanner input = new java.util.Scanner(System.in); double n= input.nextDouble(); for(int i = 0; i<5; i++) { System.out.println(Math.random()*n+1); } }}
结果:
3.java很方便吧
- C语言和java中生成随机数的原理和方法
- 【学习笔记】C语言 随机数的生成原理分析和各类随机数公式
- C语言中伪随机数生成方法
- C 语言中随机数的生成
- C#中生成随机数的方法和语句
- c语言中随机数生成
- c语言中,随机数的生成,随机ID的原理及利用
- C语言中产生随机数的方法
- C语言中产生随机数的方法
- 在java中生成随机数的方法
- 在java中生成随机数的方法
- Java中生成随机数的方法
- Java中生成随机数的方法
- 在Java中生成随机数的方法
- java的随机数生成原理
- java的随机数生成原理
- c++和c语言随机数的产生
- C语言生成32位和64位随机数算法
- JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程
- javascript检验身份证号码
- 数据结构--C语言
- Java 设计模式 结构型模式 + 案例
- C++ override的用法
- C语言和java中生成随机数的原理和方法
- Python---Numpy
- 14、Java入门—Java IO流之File类的使用
- H264 NAL头解析
- 大数据开发进阶之HBase开发实例介绍
- 开始学习PPT
- UVA 111100 The Trip, 2007 贪心 *
- Linux:关机指令shutdown
- ActionContext和ServletActionContext小结