作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户在我的系统中添加新项目时,我想为该项目生成一个唯一的非递增伪随机 7 位代码。创建的项目数量只会以千计 (<10,000)。
因为它需要是唯一的并且没有两个项目具有相同的信息,所以我可以使用哈希,但它需要是一个可以与其他人共享的代码 - 因此是 7 位数字。
我最初的想法只是循环生成一个随机数,检查它是否已经被使用,如果是,冲洗并重复。鉴于碰撞的可能性很低,我认为这是一个合理但令人反感的解决方案。
回复 this question建议生成一个所有未使用数字的列表并重新排列它们。我可能会在数据库中保留一个这样的列表,但我们正在谈论 10,000,000 个条目,用于相对不常见的内容。
有没有人有更好的方法?
最佳答案
选择一个 7 位数字 素数数字A,和一个大素数 B 号,和
int nth_unique_7_digit_code(int n) {
return (n * B) % A;
}
pow(some_prime_number, n) % A
, IE。
static int current_code = B;
int get_next_unique_code() {
current_code = (B * current_code) % A;
return current_code;
}
关于random - 如何为实体创建唯一的 7 位代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245292/
我是一名优秀的程序员,十分优秀!