我希望在1到100之间得到20个随机数,但这个数字不应重复....
更新: 如果我有20个名字,其中任意5个随机逐个选择,但名称来一次不再被调用.....
可能重复:
创建无重复的随机数序列
我想写一个只使用数字作为短字符串的URL缩短器.
我不想数数,我希望下一个新数字是随机的(或伪随机).
首先,思想算法看起来像这样(伪代码):
do
{
number = random(0,10000)
}
while (datastore.contains(number))
datastore.store(number, url)
Run Code Online (Sandbox Code Playgroud)
此实现的问题是:由于数据存储区包含更多数字,因此循环将多次执行的可能性越大.性能会随着时间的推移而降低.
是否有更好的方法来获取尚未使用的随机数?
我正在尝试使用数组来修正一个程序,它可以获得0到24之间的随机数,但它们只能出现一次.我知道如何生成随机数,我只是坚持如何检查数字中是否已存在数字.我尝试生成一个新的rand()%25并将其与数组中的占位符进行比较,如果它不存在则将新的随机数放在那里,但它不起作用.
void MultiU (){
int size = 5;
int array[5];
srand(time(0));
for (int index = 0; index < size; index++){
exists[index] = rand() %25;
}
}
Run Code Online (Sandbox Code Playgroud)
我是使用数组和rand()进行编程的新手.我希望有人可以指导我朝着正确的方向前进.
我正在尝试编写一个随机选择数字并将它们添加到列表中的代码random_numbers,但是如果已经生成了一个随机数,则代码会检测到并用另一个数字替换该数字,直到每个数字都不同。
import random
random_numbers = []
for x in range(11):
Run Code Online (Sandbox Code Playgroud)
这部分生成一个随机整数并将其附加到列表中random_numbers:
random_numbers.append('[q' + str(random.randint(1, 11)) + ']')
Run Code Online (Sandbox Code Playgroud)
这部分应该遍历列表并检查生成的随机数是否已经生成,并替换它:
for item in range(len(random_numbers)):
if random_numbers[x] == random_numbers[item]:
random_numbers[x] = '[q' + str(random.randint(1, num_of_qs_in_file)) + ']'
print(random_numbers)
Run Code Online (Sandbox Code Playgroud)
输出会有所不同,但几乎总是列表多次具有相同的整数。有人可以帮忙吗?