c语言随机数函数是什么?

c语言随机数函数是什么?,第1张

C语言随机函数主要用于实现一组随机数的生成。

代码示例如下:

#include<stdioh>

#include<stdlibh> 

int main ()

{

int a;

a=rand()%4;

printf("%d\n",a);

return 0;

}

C预先生成一组随机数,每次调用随机函数时从指针所指向的位置开始取值,因此使用rand()重复运行程序产生的随机数都是相同的,可以通过srand()函数来改变指针位置。

扩展资料:

C语言随机函数指针位置

void srand( unsigned int seed )

改变随机数表的指针位置(用seed变量控制)。一般配合time(NULL)使用,因为时间每时每刻都在改变,产生的seed值都不同。

基于毫秒级随机数产生方法:

#include<windowsh>

种子设为:srand(unsigned int seed);

srand(GetTickCount());

参考资料:

-C语言随机函数

做了一段VBA代码,需要抱走。是随机生成的三种,觉得不想要,就多点几次运行。

Sub 随机()

Dim q1%, q2%, q3%, q4%, q5%

Range("c2:c13")ClearContents

q1 = Range("b14")

q3 = q1

    For q2 = 2 To 13

        q5 = Int(q3 / Cells(q2, 2))

        If q5 = 0 Then

        ElseIf q5 <> 0 Then

            q4 = ApplicationRandBetween(1, q5)

            Cells(q2, 3) = q4

            q3 = q3 - q4 Cells(q2, 2)

        End If

    Next

End Sub

  在excel中有时候会用到随机函数,其中rand函数是一个可以生成随机数的函数,成数范围是大于等于0小于1,下面就演示随机RAND函数的用法,很实用,很方便!

 工具/原料excel

 方法/步骤1RAND()只能显示0-1之间的随机数,但是加入我们用RAND()90,那么是不是就是0-90之间的随机数了呢,这个应该不难理解,同时我们在用RAND()90+10是不是就是10-100之间的随机数了呢。

 2意思就是如果我们要取a-b之间的随机数,那么我们就只需要输入=RAND()(b-a)+a就可以了。

将号码和名字对应的表格事先做好,放在sheet2里

利用randbetween( )函数,具体做法如下:

在sheet1中,选中一个单元格,在单元格中输入=RANDBETWEEN(1,15),这个公式的意思是选出介于1到15的随机数。

利用index( )函数,将随机取出的数字和名字相对应,具体做法如下:

在前面randbetween( )函数里面添加index( )函数,函数是这样的:=INDEX(Sheet2!B1:B15,RANDBETWEEN(1,15))

完成后按下F9键,会随机显示所有的名字。松开F9键,即显示一个随机的名字。

5

如果需要界面好看一点,也可以插入一张抽奖的背景。

rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,利用srand((unsign)(time(NULL))是一种方法。

srand(

time(0)

);

放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?

因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。

你把

srand(time(0))

放到循环前面就可以了。

原因:

time(0)返回的是系统的时间(从197011午夜算起),单位:秒,而那个循环运行起来耗时连0000001秒都不到!

也就是说,srand(time(0))

连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。

如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand

就不一样了但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。

另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11669831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存