鱼C论坛

 找回密码
 立即注册
查看: 1847|回复: 7

[已解决]srand的问题学姐帮帮我吧

[复制链接]
发表于 2019-5-20 22:39:09 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 带上面具的孩纸 于 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[i];
                        array[i] = array[index];
                        array[index] = temp;
                }
        }
}

不懂得srand() rand()怎么用 帮帮忙解释解释
最佳答案
2019-5-20 22:39:10
带上面具的孩纸 发表于 2019-5-20 23:31
不是指定,只是皮一下

函数说明有看过 但是不太理解具体怎么使用

使用就是两个结合起来使用啊 !
你不愿意百度 我给你百度了一个答案

rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

最佳答案

查看完整内容

使用就是两个结合起来使用啊 ! 你不愿意百度 我给你百度了一个答案 rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-20 22:39:10 | 显示全部楼层    本楼为最佳答案   
带上面具的孩纸 发表于 2019-5-20 23:31
不是指定,只是皮一下

函数说明有看过 但是不太理解具体怎么使用

使用就是两个结合起来使用啊 !
你不愿意百度 我给你百度了一个答案

rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-20 23:21:50 | 显示全部楼层
为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器

srand用法:void srand(unsigned int seed)
seed相当于一个种子,后面生成的随机数就是基于这个种子产生的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-5-20 23:31:03 | 显示全部楼层
HUMMER军 发表于 2019-5-20 23:21
为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器

不是指定,只是皮一下

函数说明有看过 但是不太理解具体怎么使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 13:36:57 | 显示全部楼层
本帖最后由 bin554385863 于 2019-5-22 13:38 编辑
#include <stdio.h>
#include <time.h>
void main()
{
    int n;
    printf("请输入随机数的个数\n");
    scanf("%d", &n);
    int arr[n];
    srand(time(NULL));

    for (int i = 0; i < n; i++)
    {

        arr[i] = rand();
    }
    for (int j = 0; j < n; j++)
    {
        printf("arr[%d] = %d\n", j, arr[j]);
    }
}
-------------------------------------------------------版权所有 (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[0] = 22072
arr[1] = 28627
arr[2] = 5107
arr[3] = 4012
arr[4] = 29538

E:\Administrator\Documents\My C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 19:23:39 | 显示全部楼层
bin554385863 发表于 2019-5-22 13:36
-------------------------------------------------------版权所有 (c) 2009 Microsoft Corporation。保 ...

c语言定义都要在开头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 20:05:53 | 显示全部楼层
本帖最后由 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[n];
......
在老编译器比如VC6.0是非法的,但是在VScode1.33(2019年版本)就是合法的.新的标准允许在一定条件下使用变量做数组的大小,比如上面的arr[n].
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-23 11:04:36 | 显示全部楼层
为什么指定是学姐帮忙???
srand是初始化随机数发生器
rand是生成随机数发生器

srand用法:void srand(unsigned int seed)
seed相当于一个种子,后面生成的随机数就是基于这个种子产生的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表