需要准备的材料分别是:电脑、php编辑器、浏览器。
1、首先,打开php编辑器,新建php文件,例如:indexphp,并定义一个数组。
2、在indexphp中,输入代码:echo $a[mt_rand(0, count($a) - 1)];。
3、浏览器运行indexphp页面,此时随机打印出了数组中的值。
4、浏览器按F5刷新,发现确实是随机的。
随机数在shell编程中十分重要
1、使用shell变量$RANDOM
echo $RANDOM
2、使用awk的随机函数
awk 'BEGIN{srand();print rand()}'
3、使用系统设备文件/dev/random 和 /dev/urandom
dd if=/dev/random | od -a |sed 's/[^ ]//;s/ //g' | head -3或dd if=/dev/urandom | od -a |sed 's/[^ ]//;s/ //g' | head -3补充:/dev/random 提供优质随机数。
/dev/urandom提供伪随机数。速度更快、安全性较差的随机数发生器。
把
srand(
time(0)
);
放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?
因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。
你把
srand(time(0))
放到循环前面就可以了。
原因:
time(0)返回的是系统的时间(从197011午夜算起),单位:秒,而那个循环运行起来耗时连0000001秒都不到!
也就是说,srand(time(0))
连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。
如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand
就不一样了但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。
另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。
C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。
(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlibh, 其值为2147483647。
例如:#include<stdioh>
#include<stdlibh>
void main()
{
for(int i=0;i<10;i+)
printf("%d\n",rand());
} (2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数:例如:随机生成10个0~100的数:
#include<stdioh>
#include<stdlibh>
#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<timeh>例如:
#include<stdioh>
#include<stdlibh>
#include<timeh>
#define random(x) (rand()%x)
void main()
{ srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d\n",random(100));
}这样两次运行的结果就会不一样了!!
return一句的功能只是把得数的绝对值控制在0~32767之间,关键是next
=
next
1103515245
+
12345一句。next变量是静态的,变化以后的值是不消失的,下一次还可用,所以每执行一次next
=
next
1103515245
+
12345就获得一个新值,这个新值被return取整除、取余除后控制在0~32767之间就形成了0~32767的随机数。比如第一次,next=11103515245
+
12345=1103527590,经return中的对65536取整、对32768取余后就是16838;若再来一次,next已经是1103527590了,那么next
=
next
1103515245
+
12345就为next
=
1103527590
1103515245
+
12345=1217759518843121895;但这个数已经溢出了,实际上表示成了-1770082073,经return中取整取余后返回的就是-27009;可以算出来,再下一次是10113……不过,你这个函数并不能产生真正意义上的“随机”数,因为作为基数的1103515245在每次开始时是不变的,所以只能得出同样的序列,即每次执行都产生16838、-27009、10113……这样一组无限多的数。所以实际的C随机函数rand()的形参并不是void而是一个长整型变量,通常来调用实时时间函数获取实时时间值来得到,因为时间是每时每刻都在变化的,所以充当"1103515245”角色的数就每调用一次的值都不同。这样每次执行就都能得到不重复的序列。至于12345,我想随便取个数都行!仅供参考……
void main()
{
int num[600];
int a=1,b=255;//想要一组600个在1,255的随机数
srand((unsigend)time(0)); //1、移动到这里,2、去掉那组()
for(int i=0;i<600;i++)
num[i]=rand()()%(int)(b-a+1)+a;
---- 在VB中的随机函数是Rnd,但在使用的过程中发现,虽然程序启动后产生的数值是随机的,但对于每次重新启动,程序都会产生相同的随机数序列,应该怎样解决?----VB中随机函数的原形是: Rnd(number),Rnd函数返回小于1但大于或等于0的值。number (可选项)的值决定了Rnd生成随机数的方式。由于生成随机数方式的确定,导致了每次新启动随机函数,最初给定的种子都会生成相同的数列,因为每一次调用Rnd函数都用数列中的前一个数作为下一个数的种子。----为了每次运行程序调用随机函数都会有不同的随机数序列,在调用Rnd之前,先使用无参数的Randomize语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子,这样再调用Rnd就会得到不同的随机数序列了。
以上就是关于PHP怎么随机获取数组里面的值全部的内容,包括:PHP怎么随机获取数组里面的值、在shell中获得随机数的几种方法、关于C语言随机函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)