用C语言产生随机数

数字 00 01 02 03 04 05 06 07 08 09 10 11 ··· 98 99 让C语言打乱顺序产生这100组数 ,不能重复 不能少。

C语言太久没碰了,函数都不太记得了..就记个思路吧.

从题面来讲..产生 数为 某范围内的数字且不能重复.
那么可以把这些数据先放在一个栈里.然后随机产生一个要得到的下标...从栈里取出.
此时技术要点在于 数组的栈操作,int splice(int[] arr,int outIndex),把outIndex下标的元素移出栈,
第二点是 产生随便下标, 产生随机数前要 初始化 随机种子(或叫 随机列表)
void srand(long seed) 函数,一般都给一个时间戳作为参数,这样就能让程序在什么时候运行都得到一个不一样的随机列表.

int outIndex = randomize(stackLength) 产生 0到stacklength-1 之间的整数,正好是栈的有效下标...然后 取栈元素 便可以得到所要的效果
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-02
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100

void main()
{
int numbers[SIZE];
int i, j;

srand(time(NULL));

for (i = 0; i < SIZE; ++i)
{
numbers[i] = rand() % 100;

for (j = 0; j < i; ++j)
{
if (numbers[j] == numbers[i])
{
numbers[i] = rand() % 100;
j = -1;
}
}
}

for (i = 0; i < SIZE; ++i)
{
if (10 > numbers[i])
{
printf("0%d ", numbers[i]);
}
else
{
printf("%d ", numbers[i]);
}

if (0 == (i + 1) % 10)
{
printf("\n");
}
}

system("PAUSE");
}本回答被提问者采纳
第2个回答  2009-08-02
已调试,无误
#include "stdio.h"
#include "stdlib.h"
void main()
{
int x,a[100];
scanf("%d",&x);//输入X 做种子

int randnum; //种子数和生成用于交换的数组下标
srand(x);//用x做种子
for(int i=0;i<100;i++)
{
a[i]=i;//为数组赋初值
}
for(i=99;i>0;i--)
{
randnum=rand()%100; //下标随机数
// 使数组之间的数随机交换
int s=a[i];
a[i]=a[randnum];
a[randnum]=s;
}

//输出随机数
for(i=0;i<100;i++)
printf("%d ",a[i]);
printf("\n");

}
当然了如果你要00,而不是0,01而不是1,则输出改为
for(i=0;i<100;i++)//输出随机数
{
if(a[i]<10) printf("0%d ",a[i]);
else printf("%d ",a[i]);
}

printf("\n");
第3个回答  2009-08-02
这就是不重复随机数算法。
把这些数放在数组里面,假设为a[100]。在定义一个新数组b[100],存放结果。
过程就是随机去一个数R放在b中,然后将a[R]标记为已获取。
随机一个0-99的随机数,假设为R。
将下标为第R个数放在新数组中。b[0] = a[R];
将a[R]标记为特殊的数 a[R] = -1;
再次取随机数,范围是0-98,假设值为R2,查找a数组中不为-1的第R2个值放在b中。
依次循环,知道a中所有的数被标记为-1;
第4个回答  2009-08-02
#include<stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
int k=0,i,s[100];
bool p[1000000];
while (k<100)
{

do
{
i=rand();
}while (i>=100||p[i]!=0);
p[i]=1;
s[++k]=i;
}
}
希望能够对你有帮助哦 编译器可能不一样 你大概改一下
^_^!

如何用c语言计算1到100之间的随机数?
方法一:1 i = 1 2 while i < 10:3 k = 1 4 while k <= i:5 print('%d*%d=%2d '% (i,k,i*k),end='') #end=‘’ 表示不换行(系统默认输出完毕换行)6 k += 1 7 print()8 i += 1 输出结果 9 1*1= 1 10 2*1= 2 2*2= 4...

C语言中生成1个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取得的随机数除以(...

用c语言产生随机数
int random_num; \/\/ 用于存储生成的随机数 srandtime); \/\/ 设置随机数种子,一般以当前时间作为种子,确保每次运行程序时生成的随机数序列不同 random_num = rand; \/\/ 生成一个随机数 printf; \/\/ 输出随机数 return 0;} 以下是 在C语言中,我们可以使用标准库中的`rand`函数来生成随机数。但是...

c语言,如何产生随机数
答案:在C语言中,可以使用标准库函数`rand`来产生随机数。这个函数定义在``头文件中。下面是一个简单的例子来说明如何使用它:详细解释:1. 引入必要的头文件:在使用`rand`函数之前,需要包含``头文件,因为该函数是定义在这个头文件中的。c include 2. 使用rand函数生成随机数:`rand`函数返回一...

vc环境下 c语言怎么生成随机数
在VC环境下,使用C语言生成随机数时,首先需要设定种子值。本文提供一个示例程序,用于生成16个不重复的0至15之间的随机数。程序如下:1. 设置种子值为1000。2. 初始化循环变量i,并创建一个名为m的整型数组,用于存储生成的随机数。3. 使用`printf`函数提示用户输入种子值,并使用`srand`函数根据...

c语言,如何产生随机数
要产生真正的随机数,首先要确保种子的多样性。在C语言中,正确的方法是在程序开始时设置种子,例如:c include include void main() { srand((unsigned)time(NULL)); \/\/ 设置种子,使用当前时间作为随机数源 for(int i = 0; i < 100000; i++) { int random_number = rand() % 100; \/\/...

c语言随机数怎么生成
在实际编程中,我们经常需要生成随机数。在c语言中我们通常使用rand方法生成随机数,在调用rand前需要调用srand初始化随机数种子。电脑:华为MateBook14 系统:Windows10 软件:notepad++等编辑器、gcc编译器1.0 1、使用rand函数生成随机数,rand随机生成一个位于0 ~ RAND_MAX之间的整数。如下图中,我们...

C语言怎样产生一定范围的随机数?
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,可以称它为种子。为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数。C语言产生一定范围的随机数的源代码如下:include<stdio.h> include...

C语言怎样产生一定范围的随机数?
在C语言中,可以使用stdlib库中的rand函数来产生随机数,通过结合时间或者特定种子值作为rand函数的参数,可以产生一定范围的随机数。解释如下:使用rand函数产生随机数 C语言中的rand函数可以生成一个伪随机数。这个数通常是一个较大的整数,每次调用rand都会生成一个新的随机数。为了在一个特定范围内生成...

C语言中怎样生成随机数?
C语言中生成随机数主要依赖于`srand()`和`rand()`这两个函数。`srand()`函数的作用是设定随机数生成的基数,通常需要一个动态变化的种子值,以确保每次产生的随机数不同。如果不使用`srand()`,只依赖`rand()`,虽然简单,但随机数的生成将受到初始种子值的限制,可能产生固定的序列。例如,如果你...

相似回答