使用时钟滴答作为随机数种子

2023-11-23

我使用当前时钟滴答作为随机数生成的种子。随机数用于伪 GUID,并且在我的数据库中进行检查将确保它在返回之前不存在。平均而言,在进程的生命周期内,该方法将被连续调用大约 10k 次。

我担心的是,可能会连续生成相同的号码,从而导致对我的数据库进行多次不必要的递归调用以检查相同的 ID。如果可能的话我想避免这种情况。测试这个场景的最佳方法是什么?

如果重要的话,应用程序是 .NET 4,数据库是 SQL Server 2008。

private static string GenerateUniqueDelId()
{
    // Generate a random integer using the current number of clock ticks as seed.
    // Then prefix number with "DEL" and date, finally padding random integer with leading zeros for a fixed 25-character total length.
    int seed = (int)DateTime.Now.Ticks;
    Random number = new Random(seed);
    string id = string.Format("DEL{0}{1}", DateTime.Today.ToString("yyyyMMdd"), number.Next().ToString("D14"));

    // Lookup record with generated ID in Sesame. If one exists, call method recursively.
    string query = "SELECT * FROM Lead WHERE Esm_Id = @Esm_Id";
    SqlParameter[] parameters = { new SqlParameter("@Esm_Id", id) };
    if (DataManager.GetRow(query, parameters, DelConnection.Sesame) != null) return GenerateUniqueDelId();

    // Otherwise, return ID.
    return id;
}   //// End GenerateUniqueDelId()

您的担忧是正确的:您应该移动您的创作Random实例超出您的方法主体 - 否则您将多次使用相同的值重新播种,从而产生相同的数字序列。

而且你有点重新发明轮子:默认的构造函数Random类已经使用当前时钟时间作为默认种子。

问题是为什么不避免所有这些而只在数据库端使用自动生成的 Guid 呢?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用时钟滴答作为随机数种子 的相关文章

  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • SQL限制数据库中的最小值和最大值

    CREATE TABLE TBL CD CDnr int identity 1 1 CDTitel nvarchar 80 NOT NULL CDduur int CDprijs smallmoney 所以我正在创建这个表 有什么方法可以将
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • M1 Mac 上的 Scrapy:MemoryError:无法为 ffi.callback() 分配写入+执行内存

    我是 scrapy 新手 最近开始在 M1 MacBook Air 上使用它 我遇到了一个问题 例如 当我尝试做这样的事情时 scrapy shell bbc com 它会返回我 MemoryError 无法为 ffi callback 分
  • Spark 中有哪些不同的联接类型?

    我查看了文档 它说支持以下连接类型 要执行的连接类型 默认内 必须是以下之一 内部 交叉 外部 完整 full outer 左 left outer 右 right outer 左半 左反 我看了看堆栈溢出答案关于 SQL 连接和最上面的几
  • 将字符串的 printf 填充 0

    有没有办法将 printf 中的空格字符替换为 0 填充字段宽度 使用的代码 printf 010s this 似乎不适用于字符串 确实 0flag 仅适用于数字转换 您必须手动执行此操作 int print padleftzeroes c
  • logback.xml 应该在 SBT/Scala 项目中的哪个项目目录中?

    我有一个 SBT Scala 项目 logback 似乎可以工作 但完全忽略了我的logback xml配置文件 我已放置在src main scala logback xml 它没有任何作用 它的正确位置是什么 任何人都可以发布一个 SB
  • 由于“错误 LNK2028:无法解析的令牌...”,我无法编译解决方案

    我有一个用 C 编写的 dll 和一个用 Visual C 编写的 exe 我将 dll 中的函数声明为 string declspec dllexport ConfigureHAT T STRING pathFile 在 exe 项目中
  • 重置 Chrome DevTools 控制台上下文的方法

    Chrome gt DevTools gt console 中是否有任何功能可以清除 重置 删除在测试时声明的变量和函数 就像调用clear 清除日志一样 举个例子 我有一个用 let 关键字声明的变量 let str Hello 我通过控
  • 在测试中实例化多个 Spring Boot 应用程序

    我有几个 Spring Boot 应用程序实例 它们同时对数据库进行一些工作 每个实例都在单独的 JVM 中运行 这是一种用 Java 编写测试以在一个 JVM 上进行测试的方法吗 就像下面这样 设置一些嵌入式数据库用于测试目的 甚至只是模
  • 为什么在 AngularJS 中使用 $onInit? [复制]

    这个问题在这里已经有答案了 在 AngularJS 中 onInit函数是否可以在没有该函数的情况下进行相同的初始化 例如这个 module component myComponent controller function const c
  • 理解和可视化递归

    我在这里提到了几个有关递归的问题 但我无法理解递归如何解决这个特定问题 Python中获取字符串中所有字符组合的递归程序 st def combi prefix s if len s 0 return else st append pref
  • 是否可以在 Twitter Bootstrap 中的模态中使用“行”和“跨度”?

    我正在尝试使用 Twitter Bootstrap 中的模式来实现联系表单 理想情况下 我希望前两个字段集彼此相邻对齐 第三个字段集 包含文本区域和提交按钮 占据模式的整个宽度 我尝试使用行和跨度来使它们很好地发挥作用 但不确定如何进行此操
  • 是否应该在第二个 lambda 中重用 LINQ lambda 表达式参数?

    下列的这个问题我想知道lambda参数表达式实例的重用应该被认为是好还是坏 我有时会得到一个完整的 LINQ 表达式树 其中相同的 lambda 参数实例在第二个非嵌套 lambda 中正确使用 class Person public in
  • PHP 中 mb_detect_order() 的奇怪行为

    我想检测一些文本的编码 使用 PHP 为此 我使用 mb detect encoding 函数 问题是 如果我使用 mb detect order 函数更改可能编码的顺序 该函数会返回不同的结果 考虑下面的例子 html lt lt lt
  • Chrome 扩展:下载/导出“即时”创建的内容

    我需要让用户下载从扩展中包含的某些数据动态创建的文件 但我不想在服务器端执行此操作 作为一个现实世界的例子 有一个变量包含文本 hello world 我希望用户能够下载 创建 TXT包含此类文本的文件 是否可以 2010年10月30日编辑
  • 无法安装node-sass

    我正在尝试安装node sass 但它不让我安装 我尝试过更新npm 我把这个放进去 sudo npm install g 节点 sass 我得到了这个 从错误之前的一行开始 gyp verb build dir attempting to
  • 无法使用 Sheets API 访问公共工作表

    一年多以来 我一直在网页上使用 Google Sheets APIv4 来显示公开共享的 Google 电子表格中的数据 尽管我们这边没有任何改变 但 Sheets API 现在返回 403 权限被拒绝错误 我尝试访问的工作表是我拥有的工作
  • Lucene:如何获取文档的分数

    我想输出文档的分数 我为此编写的代码是 IndexReader reader IndexReader open FSDirectory open indexDir IndexSearcher searcher new IndexSearch
  • Github远程推送包大小超出

    我是 Git 新手 有一个相当大的项目 我想将其推送到 Github 上的远程存储库 存储库 B 原始项目也在 Github 上 但来自不同的存储库 存储库 A 我必须先对 Repo A 中的文件进行一些更改 然后才能在 Repo B 上设
  • 如何连接到 AVD

    我正在尝试编写自己的 Android http 服务器 没问题 但我的 AVD 有问题 我不想每次想要测试更改时都将应用程序下载到手机上 我想通过 AVD 连接到我的应用程序 为了获取IP地址 我使用这个函数 private String
  • 继承字典的序列化类不是序列化属性

    我有一个继承自 Dictionary 的类 并且有几个属性 当我序列化时 它仅序列化字典而不序列化属性 如果我有一个包含属性的有效负载 它会反序列化为它们 如何让它序列化我的对象 包括属性 public class Maintenance
  • 使用时钟滴答作为随机数种子

    我使用当前时钟滴答作为随机数生成的种子 随机数用于伪 GUID 并且在我的数据库中进行检查将确保它在返回之前不存在 平均而言 在进程的生命周期内 该方法将被连续调用大约 10k 次 我担心的是 可能会连续生成相同的号码 从而导致对我的数据库