c# - 建立一个非顺序的数字列表(从一个大范围)

标签 c# .net asp.net sql sql-server

我需要创建一个适合某个范围的非顺序数字列表。例如,我需要生成一个从 1 到 100 万的数字列表,并确保所有数字都没有按顺序排列,并且它们被完全打乱。我想我的第一个问题是,是否有任何好的算法可以提供帮助以及如何最好地实现它。

我目前不确定最好的实现方式,要么通过将数字吐出到 XML 文件中的 C# 控制台应用程序,要么通过将数字吐出到一个表或一组表中的数据库,但是这对于真正找出“洗牌”数字集的最佳方法来说真的是次要的。

有什么建议吗?

罗布

最佳答案

首先,如果没有的数字是连续的,那么序列中的每个数字都必须小于它的前身。具有该属性的序列从大到小排序!显然那不是你想要的。 (或者您可能根本不想要 5、6、7 形式的任何子序列?但是 6、8、20 可以吗?)

为了正确回答您的问题,我们需要了解有关问题空间的更多信息。我想知道的事情:

1) 范围的大小等于、大于还是小于序列的大小?也就是说,您要问 10 到 10 之间的十个数字,1 到 10 之间的五个数字还是 1 到 10 之间的五十个数字?

2) 序列包含重复是否可以接受? (如果序列中的项数大于范围,则显然是。)

3) 随机性的用途是什么?大多数随机数生成器只是伪随机的;聪明的攻击者可以通过了解前面的数字来推断下一个“随机”数字。例如,如果您要从 52 张牌中生成一系列的 5 张牌来组成一手扑克牌,您需要非常强的随机性;你不希望玩家能够推断出他们的对手手中有什么。

关于c# - 建立一个非顺序的数字列表(从一个大范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881553/

相关文章:

.net - 带有.NET库的VB6

c# - 在 C# 的方法中返回 FileStream 是否安全?

c# - 我想为网站开发 CRUD 界面,但在 Edit 方法中不断收到错误

C# 从文本框中删除最后两个字符

c# - 从 C# 中的像素计算英寸和厘米

c# - 如何让 XMLSerializer 将 namespace 添加到嵌套对象中的属性?

.net - 什么是 Microsoft.Contracts,它来自哪里?

C# 是否有内置函数可以将格式化的字符串转换回数字?

c# - ASP.NET Core 2.1 执行迁移后在哪里查找数据库

c# - 获取表中所有记录的样本