在c语言如何获取一个各位都不相同的随机数

在c语言如何获取一个各位都不相同的随机数,第1张

大致算法如下:

定义一个数组都初始化为0用来储存1~6的使用的次数,

如calc[7](a[0]不用)

calc[1]~calc[6]分别储存1~6的使用的次数

每当产生一个随机数放入temp,若calc[temp]>2则重新产生直到calc[temp]<=2才把pNumber=temp

然后calc[temp]++

具体程序由于我不会NSMutableArray我把它放在num数组中

#include<iostreamh>

#include<stdlibh>

#include<timeh>

voidmain()

{

srand((unsigned)time(NULL));

inttemp,calc[7]={0},num[13];

inti;

for(i=1;i<=12;i++)

{

while(1)

{

temp=rand()%6+1;

if(calc[temp]<2)

{

num[i]=temp;

calc[temp]++;

break;

}

}

}

for(i=1;i<=12;i++)

cout<<num[i]<<endl;

}

可以使用库函数rand()。

rand声明于stdlibh,其原型为

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]。

方法1

(数据类型)(最小值+Mathrandom()(最大值-最小值+1))

例:

(int)(1+Mathrandom()(10-1+1))

从1到10的int型随数

方法2

获得随机数

for (int i=0;i<30;i++)

{Systemoutprintln((int)(1+Mathrandom()10));}

(int)(1+Mathrandom()10)

通过javaMath包的random方法得到1-10的int随机数

公式是:最小值---最大值(整数)的随机数

(类型)最小值+Mathrandom()最大值

方法3

Random ra =new Random();

for (int i=0;i<30;i++)

{Systemoutprintln(ranextInt(10)+1);}

通过javautil包中的Random类的nextInt方法来得到1-10的int随机数

生成0到1之间的任意随机小数:

生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。

[n1,n2]

也就是 ranextDouble() (n2-n1)+n1

以上就是关于在c语言如何获取一个各位都不相同的随机数全部的内容,包括:在c语言如何获取一个各位都不相同的随机数、如何在随即个随机数中获取其中的随机数、java获取随机数的几种方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9309924.html

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

发表评论

登录后才能评论

评论列表(0条)

保存