如何用C语言从固定的一些数中产生随机数?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 01:53:02
如何用C语言从固定的一些数中产生随机数?

如何用C语言从固定的一些数中产生随机数?
如何用C语言从固定的一些数中产生随机数?

如何用C语言从固定的一些数中产生随机数?
楼上的有问题,很可能相当长的时间才能完成一次随机,运气不好一天都完不成一次
/* 我自己想的一个方法:
1,数组flag[48],表示48个数是否被选中,初始化为0,表示未被选中.
2,srand(),rand()得到一个随机数m.
3,然后得到我们需要的随机数.第一次是m%48+1,第二次是m%47+1,第三次是m%46+1,...,最后一个不需要随机了.
4,每次获取随机数后,这个随机数表示第几个未被选中的数,每次选中后将flag标志置1.
*/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int Num = 48; // 需要随机的次数
// 选中标志
int Flag[48] =; // 标记是否已经被随机
// 输出数据
int bufArr[48]=; // 保存随机后的数据
int i = 0;
int j = 0;
int Rand_num = 0; // 保存中间随机到的数据
int Rand_max = 0; // 保存当前存在的数据数量
Rand_max = Num;
srand(time(0));
// 产生随机数
for(i = 0; i < Num; i++)
{
Rand_num = rand()%Rand_max + 1; // 获取随机数Rand_num
for(j = 0; j < Num; j++) // 遍历所有数据
{
if(!Flag[j]) // 判断该数据是否已经随机
Rand_num--;
if(!Rand_num) // 判断是否数到第Rand_num个没有标记的数据
break;
}
bufArr[i] = j+1; // 获取结果,第Rand_num个没有标记的数据
Flag[j] = 1; // 置获取标志
Rand_max--; // 需要随机的数减少一个
}
// 每次都不一样
for(i = 0; i < Num; i++)
{
if(i%8 == 0)
printf("\n");
printf("%5d", bufArr[i]);
}
printf("\n");
return 0;
}

如何用C语言从固定的一些数中产生随机数? 如何用C语言从固定的一些数中产生随机数?一副扑克牌,除去大、小王和4个A,从剩余48张扑克牌中每次随机产生一个数,48张牌具有唯一性,也就是出现一次后就不再出现了.换句话说就是模拟发牌 c语言在固定数中产生随机数,比如307,3805,3852,823,704这些数中产生随机数 c语言中如何用srand产生0-1000000的随机数我需要一个c程序产生0-1000000的随机数,但不会用srand函数,急用! 如何用c产生随机数 如何用C语言产生一个六位数的随机数?请问如何用C语言编一个程序算出随机的一个六位数随机数啊? 如何用c语言产生一定范围内的随机数?请附带一定的解释……谢谢啦! c语言中怎样产生位数一定的随机数 C语言中随机数是如何产生的呢? C语言中有没有产生随机数的函数随机产生一个0到9之间的数. 如何用C语言产生1-52的52个不同的数呀? 如何用VB产生一个每次都不一样的随机数啊,用rnd的话只能产生一个固定的数字 如何用C++产生随机数 如何用C语言重复的产生不重复的0到9之间的随机数?比方说我要循环20次,要这20次循环产生的9组随机数的顺序不同? matlab 产生区间【-5 5】随机数如何用matlab产生固定区间的随机数,其均值方差如何?恳请详细叙述 C语言如何产生真正的随机数 如何用C语言输出给定数字且没有重复的随机数? C语言中如何用rand()函数产生20-90的随机整数