gpt4 book ai didi

C:从一个完全不同的范围中创建随机数

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:00 25 4
gpt4 key购买 nike

例如,我有这 3 个变量:

N = 5;
int r1 = rand() % N;
int r2 = rand() % N;
int r3 = rand() % N;

如何在该范围内获得 3 个不同的数字?我试过这段代码:

do{
int r1 = rand() % N;
int r2 = rand() % N;
int r3 = rand() % N;
}while((r1 == r2) && (r1==r3) && (r2==r3));

但它不起作用。有时一个或两个数字相同(例如:1、1、4)。但我需要它们都不同。我该怎么做?

最佳答案

此代码将在 0..4 范围内选择 3 个不同的数字。它通过创建一组可用数字来工作,当每个数字被选中时,它就会从列表中删除。这消除了重复尝试满足所有不同的条件的低效率 - 这可能永远不会发生在真正的 RNG 上!

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

#define RANGE 5 // how many different numbers
#define PICK 3 // how many to pick

int main(void) {
int pool[RANGE];
int size, n, i;
srand((unsigned)time(NULL));
for (size=0; size<RANGE; size++) {
pool[size] = size; // create number pool
}

// pick different numbers
for(i=0; i<PICK; i++) {
n = rand() % size; // random array index
printf("%d ", pool[n]); // select number from pool
pool[n] = pool[--size]; // remove from pool
}
printf("\n");
return 0;
}

关于C:从一个完全不同的范围中创建随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36921473/

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