gpt4 book ai didi

c - 请帮忙。生成随机数的程序不工作

转载 作者:行者123 更新时间:2023-12-04 09:36:42 26 4
gpt4 key购买 nike

我正在写一个程序,它必须随机生成 N 个不重复的数字

原型(prototype)应该是voidrandom_int(int array[], int N);它没有任何错误,但它不工作。甚至不给任何数字

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void random_init(int array[], int N)
{
srand(time(NULL));
int i, j;
array[0]=rand()%N;
for(i=1;i<N;i++)
{
array[i]=rand()%N;
if(array[i]==0)
array[i]=1;

for(j=0;j<i;j++)
{
if(array[i]==array[j])
break;
}
if((i-j)==1)
continue;
else
i--;
}
}

int main(void)
{
int a[5], i, N;
N=5;
random_init(a,N);
for(i=0;i<N;i++)
printf("%d ", a[i]);
return 0;
}

最佳答案

  1. 这部分没有意义:

    if(array[i]==0)
    array[i]=1;

    它将您的选择限制为 N-1 个数字(1 到 N-1),您会尝试从中找到 N 个数字而不重复 - 导致无限循环。

  2. if((i-j)==1)
    continue;

    在这里您可能需要 if (i==j) 来检查前一个循环是否运行完成。

以随机顺序生成数字 0..N-1 的一种更快更简单的方法是将这些数字放入一个数组中(按顺序),然​​后使用 Fisher-Yates Shuffle打乱数组。

关于c - 请帮忙。生成随机数的程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com