C语言中如何实现在1到6中随机产生一个数字并存入数组中,一共存12次,如何保证每个数字只重复一次

作者&投稿:丁季 (若有异议请与网页底部的电邮联系)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 12
int main(int argc, char *argv[])
{
int i;
int x[N] = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6};

printf("之前数组: ");
for (i = 0; i < N; i++)
printf("%3d", x[i]);
printf("\n");

srand((unsigned)time(NULL));

for (i = N-1; i >= 0; i--)
{
int rd = rand() % N;
int temp = x[i];
x[i] = x [rd];
x[rd] = temp;
}

printf("之后数组: ");
for (i = 0; i < N; i++)
printf("%3d", x[i]);
printf("\n");

return 0;
}
——————————————————————————————————
其实该问题类似洗牌的程序,所有的数字其实都是已知的,只需要通过随机数去打乱这些数的次序就可以达到效果。先前的regret4hxp2的思路可以达到同样的效果,但是有个缺点是效率不高,而且需要引入同步的计数。

1到6.一共就6个数字。 存12次,就是12个数。

所以,最简单的思路就是,产生数字,就检索,在当前数组中出现几次了,如果出现过一次或者0次,就存,如果出现两次了就不存了。
最后,肯定是正好 每个数字存了两次。

C语言中如何实现,在1到6之间产生随机数并存入数组中,数组一共有12个数据,12个数据里面各有两个相同的数~

大致算法如下:
定义一个数组都初始化为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
#include
#include
void main()
{
srand((unsigned)time(NULL));
int temp,calc[7]={0},num[13];
int i;
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;
}

#include
#include
#include

void main()
{
int i,j;
int x[10];
int v = 50,n=10;
srand((unsigned)time(NULL));
x[0] = rand() % v +1;
for (i=0;i<n;i++) {
Lab: x[i] = rand() % v +1;
for (j=0;j<i;j++) { if (x[i] == x[j]) goto Lab;} // 比较一下,相同数则不要它,返回再取
}
for(i=0;i<n;i++) printf("%2d
",x[i]);
}

如何用c语言随机生成1-9中的数
答:include <stdlib.h> include <stdio.h> include int main(void){ srand(time(NULL));printf("%d\n",rand()%9+1);system("pause");return 0;}

如何用C语言从1,2,3三个数中出现一个随机数
答:你可以运行几次,可看到不同的结果。另外下面这个也是产生随机数 include <stdlib.h> include <stdio.h> include main( ){int i;srand( (int)time( NULL ) );for(int i=0;i<10;i++)printf( "%d\n", rand()%100+1);} 实现的是产生10个范围在1--100的随机数.

从1-5之间随机出现一个数字,用C语言如何实现??
答:include <stdio.h> include void main(){ int a;srand(time(NULL));a = rand() % 5 + 1;printf("%d\n", a);}

怎样用rand( )函数获得1~6之间的随机整数?
答:Rndnum=dmin+int((dmax-dmin+1)*rnd),其中dmin和dmax就是区间边界,在这里是1和6。

有没有会python的学霸啊?怎么随机从1-6中选1000个数,然后统计次数啊_百 ...
答:import randoml = [random.choice([1,2,3,4,5,6]) for _ in range(1000)]d = [(i, l.count(i)) for i in set(l)]print d

C语言中生成0~1之间的随机数有什么函数
答:C语言中生成1个0到1的随机数可以执行语句:float b=rand()/(RAND_MAX+1.0);解析:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;用函数rand取得的随机数除以(...

想问下javascript如何实现在一段文字中随机添加一个字符串?随机值可以...
答:代码:yStr="abcdefghijklmnopqrstuvwxyz0123456798" ;//上面是原字符串,可以直接指定或通过DOM从页面中获取到rStr="*";zStr="";//输出的字符串prePo=0;for(var i=0;i<yStr.length;){step=parseInt(Math.random()*6)+1;//随机前进1至6个字符if(i>0){//忽略最前面的zStr=zStr+yStr....

C#中怎样用Random产生1到10之间的随机数
答:set num=%random set /a num=num%%10+1 echo %num 1到1000:2、rNumber.Next(1,1000);Random rNumber = new Random();//实例化一个随机数专对象 rNumber.Next(1,10);//产生一个1到10之间属的任意一个数 rNumber.Next(1,1000);//产生一个1到1000之间的任意一个数 ...

...随机选出四个不同的数字,注意,四个数字不能相同。用C语言实现...
答:include<stdio.h> include<stdlib.h> include int fun(int a,int b,int c,int d)//判断所得的四个数是否相等,全都不等为正确 { if((a!=b)&&(a!=c)&&(a!=c)&&(a!=d))if((b!=c)&&(b!=d))if(c!=d)return 1;return 0;} void main(){ int a,b,c,d;srand((unsigned...

怎样 在c语言中随机的输出1-53这几个数?
答:需要对获取过的随机数保存记录,在每获取一个新的随机数时,先判断是否获取过。如果获取过,那么抛弃;否则输出,并保存记录。当全部数据均输出后结束程序。代码如下:int main(){ int f[54]={0}; int n; int i; srand(time(NULL)); for(i = 0; i < 53; i ++) { ...