Skip to content

如何高速生成一百万个不重复的随机数 #2

@Ahaochan

Description

@Ahaochan

之前在面试遇到这个问题, 我的答案是使用随机函数加上时间戳, 但是极端情况下, 还是有可能会重复的。

网上也看到了一种步长解法。

// 1. 根据步长生成数组
for(int i = 10000000, idx = 0; i < 99999999; i+=89, idx++) {
    array[idx].value = i;
    array[idx].sort = random();
}
// 2. 根据 sort字段 进行排序
array.sort();

在此抛砖引玉一下。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions