【发布时间】:2018-04-27 18:34:23
【问题描述】:
我的问题是,当我想为我的数据库创建一个 id 时,我会为此生成一个随机数,但不好的是它会重复。
public void Iniciar()
{
Random r = new Random();
int prevnum = -1;
for (int loop = 0; loop < 10; loop++)
{
do
{
num = r.Next(1000,9999);
} while (num == prevnum);
prevnum = num;
}
}
【问题讨论】:
-
为什么不让数据库生成id?
-
那是因为 random 并不意味着 unique。随机性不以任何方式依赖于先前的状态。 "1, 1, 1, 1, 1" 是一个完全有效的 5 个随机数序列。你到底想做什么?
-
Echo'ing @RonBeyer,了解你想要做什么会很好,但从表面上看,你应该让你的数据库处理这个用例——除非你有什么原因不相信它应该
-
我猜你可能想要洗一些数字,比如创建一个 1 到 100 的列表,然后洗它们,就像它们是卡片一样。可能是这样吗?否则,您需要跟踪以前的数字(这不是一件好事)或使用唯一的 GUID,但它们不是数字。