gpt4 book ai didi

c# - 生成唯一的随机数

转载 作者:行者123 更新时间:2023-11-30 18:51:03 25 4
gpt4 key购买 nike

我将学生 ID 作为随机编号输入到数据库中

  int num = r.Next(1000);
Session["number"] = "SN" + (" ") + num.ToString();

但是有没有可能得到重复的号码?我怎样才能避免这种情况?

编辑::我有一个身份列,学生 ID 与 ID 是分开的,我将从 UI 中向数据库中输入一个随机学生 ID。

最佳答案

在数据库中拥有一个仅是整数唯一 ID 的列是一项非常的常见任务。如此之多,以至于我曾经使用过的每个数据库都有特定的列类型、函数等来处理它。它会根据您使用的任何特定数据库而有所不同,但您应该弄清楚它是什么并使用它。

  • 您需要一个唯一而不是随机的值。两者不同。随机数重复,它们不是唯一的。唯一数字也不是随机的。例如,如果您只是从 0 开始递增数字,它将是唯一的,但这绝不是随机的。
  • 您可以使用 GUID,它是唯一的,但它是 128 位的。那是相当大的。大多数数据库只有一个计数器,每次添加项目时它们都会递增,因此 32 位通常就足够了。这将为您节省大量空间。增加计数器也比计算 GUID 的新值更快。对于往往涉及添加大量项目的数据库操作,这可能很重要。
  • 正如 Jodrell 在评论中提到的,如果您使用 GUID 或其他大字段,您还应该考虑索引的大小。对于需要更多位的列,存储和维护该索引将更加昂贵(在时间和空间上)。
  • 如果您尝试自己做某事,那么您很可能会做错。要么你的算法不是完全唯一的,它会由于不正确的同步而出现竞争条件,它会因为过度同步而导致性能下降,它会显着变大,因为这是降低碰撞风险所采取的措施,等等。在最终,数据库将可以访问您无法访问的工具;让它来处理,这样您就不必担心会搞砸什么。

关于c# - 生成唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12749964/

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