srand的问题学姐帮帮我吧
本帖最后由 带上面具的孩纸 于 2019-5-20 23:01 编辑话不多说先上代码
void shuffle(int array[], int length)
{
int index, temp, i;
static int t1, t2;
srand(t1);
t1 = rand();
t2 = time(NULL);
srand(t1+t2);
for (i = 0; i < length; i++)
{
index = rand() % (length - i) + i;
if (index != i)
{
temp = array;
array = array;
array = temp;
}
}
}
不懂得srand() rand()怎么用 帮帮忙解释解释
{:10_291:} 带上面具的孩纸 发表于 2019-5-20 23:31
不是指定,只是皮一下
函数说明有看过 但是不太理解具体怎么使用
使用就是两个结合起来使用啊 !
你不愿意百度 我给你百度了一个答案
rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器
srand用法:void srand(unsigned int seed)
seed相当于一个种子,后面生成的随机数就是基于这个种子产生的!
HUMMER军 发表于 2019-5-20 23:21
为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器
不是指定,只是皮一下
函数说明有看过 但是不太理解具体怎么使用 本帖最后由 bin554385863 于 2019-5-22 13:38 编辑
#include <stdio.h>
#include <time.h>
void main()
{
int n;
printf("请输入随机数的个数\n");
scanf("%d", &n);
int arr;
srand(time(NULL));
for (int i = 0; i < n; i++)
{
arr = rand();
}
for (int j = 0; j < n; j++)
{
printf("arr[%d] = %d\n", j, arr);
}
}
-------------------------------------------------------版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-5fvlb0y5.fck --stdout=Microsoft-MIEngine-Out-omtmgqmb.h2p --stderr=Microsoft-MIEngine-Error-vn0qe5ry.pe5 --pid=Microsoft-MIEngine-Pid-ctvjxhdw.l20 --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
请输入随机数的个数
5
arr = 22072
arr = 28627
arr = 5107
arr = 4012
arr = 29538
E:\Administrator\Documents\My C> bin554385863 发表于 2019-5-22 13:36
-------------------------------------------------------版权所有 (c) 2009 Microsoft Corporation。保 ...
c语言定义都要在开头 本帖最后由 bin554385863 于 2019-5-22 20:14 编辑
几番离愁 发表于 2019-5-22 19:23
c语言定义都要在开头
for循环C11标准允许在循环内定义变量
for(int a = 1;;)
if(){int a = 1;..........}
C11标准都是合法的
还有
.....
int n;
printf("请输入随机数的个数\n");
scanf("%d", &n);
int arr;
......
在老编译器比如VC6.0是非法的,但是在VScode1.33(2019年版本)就是合法的.新的标准允许在一定条件下使用变量做数组的大小,比如上面的arr. 为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器
srand用法:void srand(unsigned int seed)
seed相当于一个种子,后面生成的随机数就是基于这个种子产生的!
页:
[1]