Ⅰ 怎样获得在一定范围内的随机数
直接的方法是
rand()
%
N
/*
不好
*/
试图返回从
0
到
N
-
1
的数字。但这个方法不好,
因为许多随机数发生器的低位比特并不随机。一个较好的方法是:
(int)((double)rand()
/
((double)RAND_MAX
+
1)
*
N)
如果你不希望使用浮点,
另一个方法是:
rand()
/
(RAND_MAX
/
N
+
1)
两种方法都需要知道
RAND_MAX,
而且假设
N
要远远小于
RAND_MAX。
RAND_MAX
在
ANSI
里
#define
在
。
顺便提一下,
RAND_MAX
是个常数,
它告诉你
C
库函数
rand()
的固定范围。你不可以设
RAND_MAX
为其它的值,
也没有办法要求
rand()
返回其它范围的值。
如果你用的随机数发生器返回的是
0
到
1
的浮点值,
要取得范围在
0
到
N
-
1
内的整数,
只要将随机数乘以
N
就可以了。
Ⅱ C语言中获得随机数的方法是什么
可以使用库函数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]。
Ⅲ 产生随机数的常用方法
简单随机抽样是一种最简单、最基本的抽样方法,简单随机抽样有两种选取个体的方法:放回和不放回,我们在抽样调查中用的是不放回抽样,常用的简单随机抽样方法有抽签法和随机数法.例:人们打桥牌时,将洗好的扑克牌随机确定一张为起始牌,这时按次序搬牌时,对任何一家来说,都是从52张牌中抽取13张牌,问这种抽样方法是否是简单随机抽样?[分析] 简单随机抽样的实质是逐个地从总体中随机抽取样本,而这里只是随机确定了起始张,其他各张牌虽然是逐张起牌,但是各张在谁手里已被确定,所以不是简单随机抽样.
Ⅳ 随机抽样方法有几种
1,简单随机抽样,又叫随机抽样.方法:
①直抽样法
②抽签法或抓阄法,抽样单位全部编上号码,将号码写在底片上搓成团
③随机数表法(可保证随机性)
2,等距随机抽样(机械随机抽样).首先,编制抽样框,将抽样框内各抽样单位按一定标志排列编号,其次,用抽样框内抽样单位总数除以样本数,求出抽样间隔距离;再次,在第一个抽样间隔内随机抽取一个号码每个样本;最后,按照抽样间隔距离,等距离抽取调查样本,等距离抽取调查样本,直到抽取到最后一个样本为止.
3,分类随机抽样,又叫类型随机抽样.首先编制抽样框,将若干样框内各抽样单位按一定标准分成若干类(或层);其次,根据各类所包含的抽样单位与抽样单位总数的比例,确定种类抽取样本单位的数量;最后,按照简单随机抽样或等距随机抽样方法从各类中抽取调查样本.
4,整群随机抽样又称集体随机抽样.首先,先将抽样框内抽样单位按一定标准分成许多群体,并把每一个群体看做一个抽样单位;然后,按照随机原则从这些群体中抽出若干人群体作为调查样本;最后,对样本群体中的每一个抽样单位逐个进行调查.
5,多段随机抽样又称多级随机抽样或分段随机抽样.
①确定抽样单位
②抽取各级样本
③对最后抽出的样本单位逐个进行调查.
Ⅳ 如何产生真正的随机数
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是它在产生是后面的那个数与前面的那漏指弯个数毫无关系。真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用返闷电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。在实际应逗旅用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。
Ⅵ C语言中获得随机数的方法
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));
}这样两次运行的结果就会不一样了!!
Ⅶ 生成随机数几种方式
在shell中有一个环境变量RANDOM,它的范围是0--32767
1、如果我们想要产生0-25范围内的数,如何做呢?如下:
用这个环境变量对26取模,就可以得到最小是0,最改肆伏大是25的数了。
2、如果想得到1--68范围内的数,可以这样
前面可以得到最小为0,最大为67的随机数,再加上1,很自然的就可以得到最大为1,最小为68的数了。
3、如果想得到6--87范围内的数。可以这样
前面可以得到最小为0,最大为81的随机数,再加上6,很自然的就可以得到最大为87,最小为6的数了。
通过上面三个例子,其它范围内的数一样可以用这种方法产生,总结出规律来
可以类推其它范围内数了
介绍:
1、/dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两雹悄个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。
2、这两个设备的差异在于:/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用, /dev/random设备可以保证数据的随机性。/dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。
3、dev/urandom 和dev/random,都是产生用不为空的随机字符流,区别是
/dev/random设备会封锁,直到系统产生的随机字符流已经充分够用,所以耗用时间较长
/dev/urandom设备不会封锁,数据的随机程度不高,但是一般情况已经够用
4、使用/dev/random比使用/dev/urandom产生大量随机数的速度要慢
通过过滤赛选可以取出随机数或随机字母如下
产生随机字母方式:
NbvFFlhs
[root@centos7 bin]#
产生随机数字方式
用途:
用来产生伪随机字节。随机数字产生器需要一个seed,先已经说过了,在没有/dev/srandom系统下的解决方法是自己做一个~/.rnd文件。如果该程序能让随机数字产生器很满意的被seeded。程序写回一些怪怪的东西回该文件。
用法:
选项说明:
-out file:结果输出到file中。
-rand file(s):指定随机数种子文件,多个文件间用分隔符分开,windows用“;”,OpenVMS用“,“,其他系统用“:”。
-base64:输出结果为BASE64编码数据。
-hex:输出核携结果为16进制数据。
num:随机数长度。
实例:
可以看见,这12个字节的随机数显示为乱码,可以对随机字符串进行base64编码或用hex格式显示
通过过滤赛选可以取出随机数或随机字母如下
产生随机字母方式:
产生随机数字方式
四、应用
字体加颜色
\033[33m 字符 \033[0m [[31m 字符 [[0m
随机颜色
color= RANDOM%8+31]
\033[${color}m 字符 \033[0m
存放颜色案例的文件
cat /etc/DIR_COLORS
Ⅷ 在SQL中怎么样获取随机数
1、随机小数 select rand(),
Ⅸ java获取随机数的几种方法是什么
方法1x0dx0a(数据类型)(最小值+Math.random()*(最大值-最小值+1))x0dx0a例:x0dx0a(int)(1+Math.random()*(10-1+1))x0dx0a从1到10的int型随数x0dx0a方法2x0dx0a获腊者得随机数x0dx0afor (int i=0;i<30;i++)x0dx0a{System.out.println((int)(1+Math.random()*10));}x0dx0a(int)(1+Math.random()*10)x0dx0a通过java.Math包的random方法得到1-10的int随机数x0dx0a公式是:最小值---最大值(整数)的随机数x0dx0a(类轮含薯型)最小值+Math.random()*最大值x0dx0a方法3x0dx0aRandom ra =new Random();x0dx0afor (int i=0;i<30;i++)x0dx0a{System.out.println(ra.nextInt(10)+1);}x0dx0a通过java.util包中的Random类的nextInt方法来得到1-10的int随机数 x0dx0a生成0到1之间的任意随机小数:x0dx0a生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可老仿。x0dx0a[n1,n2]x0dx0a也就是 ra.nextDouble() * (n2-n1)+n1
Ⅹ 日常生活中有什么方便的产生随机数的方法
用随机数生成器就可以了啊!在线随机数生成器,可以随机生成你设定的随机数,可以是唯一的或者重复的,根据你指定的最小数和最大数生成相应的随机数, 在你需要抽签、随机选择的时候非常的便利。另外,你还可以把它当成别样的色子来用。