相关疑难解决方法(0)

你最喜欢的LINQ to Objects运算符是什么?它不是内置的?

使用扩展方法,我们可以编写方便的LINQ运算符来解决泛型问题.

我想System.Linq知道命名空间中缺少哪些方法或重载以及如何实现它们.

可能使用现有方法的清洁和优雅的实现是首选.

c# linq ienumerable extension-methods linq-to-objects

73
推荐指数
19
解决办法
5571
查看次数

System.Guid.NewGuid()是如何随机的?(拿两个)

在您开始将其标记为重复之前,请将我读出来.另一个问题是(很可能)不正确的接受答案.

我不知道.NET如何生成其GUID,可能只有微软这样做,但它很有可能只是调用CoCreateGuid().但是,该函数被记录为调用UuidCreate().并且用于创建UUID的算法已被很好地记录.

长话短说,尽管如此,似乎System.Guid.NewGuid()确实使用了版本4 UUID生成算法,因为它生成的所有GUID都符合标准(参见自己,我尝试了几百万个GUID,它们都匹配).

换句话说,除了一些已知位之外,这些GUID 几乎是随机的.

这再次提出了一个问题 - 随机如何随机的?正如每个优秀的小程序员都知道的那样,伪随机数算法只与其种子(即熵)一样随机.那么种子是UuidCreate()什么?PRNG如何重新播种?它是加密强大的,或者如果两台计算机同时意外呼叫System.Guid.NewGuid(),我可以期望相同的GUID开始倾泻吗?如果收集到足够多的顺序生成的GUID,是否可以猜测PRNG的状态?

补充:为了澄清,我想知道我可以信任的随机性因此 - 我在哪里可以使用它.那么,让我们在这里建立一个粗略的"随机性"量表:

  1. 基本随机性,以当前时间为种子.可以在纸牌中使用洗牌,但是即使没有尝试也很容易碰到碰撞.
  2. 更高级的随机性,不仅使用时间,还使用其他机器特定的种子因子.也许在系统启动时也只播种一次.这可用于在DB中生成ID,因为不太可能重复.尽管如此,它对安全性并不好,因为可以用足够的努力预测结果.
  3. 密码随机,使用设备噪声或其他先进的种子随机源.每次调用或至少经常重新播种.可用于会话ID,分发给不受信任的各方等.

我在想到是否可以将它们用作数据库ID时,以及Guid.comb算法的实现System.Guid.NewGuid()(如NHibernate的实现方式)是否有缺陷,我就来到了这个问题.

.net random guid

43
推荐指数
4
解决办法
1万
查看次数

是否可以创建相同的guids

是否可以在一个应用程序中创建相同的guid

Guid id = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)

.net c# guid

11
推荐指数
2
解决办法
3257
查看次数

创建一个独特的字母数字10个字符的字符串

我想创建一个简单的短期预订系统,我想生成确认号码

  • 独特
  • 随机找
  • 字母
  • short-ish,至少比sha1返回的32个字符长的字符串短

我只希望有〜500所保留,所以我不想像 collissions高的情形产生.

我有一个想法是根据日期时间戳和用户名生成一个sha1哈希,然后将其截断为前10个字符.这样的东西是否足够可靠,足以处理~500个预订?

random unique

8
推荐指数
1
解决办法
1万
查看次数

GUID在可预测性方面有多安全?

我们目前正在使用.NET Guid.NewGuid()来生成激活码和API密钥.我想知道这是否会因为算法打开而造成安全问题.

.NET Guid使用Win32 CoCreateGuid,我不知道它的内部(可能是MAC地址+时间戳?).有人可以从第一个GUID中获得第二个GUID,或者可以用一些聪明的猜测来命中它,或者随机性是否足够好以至于搜索空间变得太大了?

生成随机密钥存在冲突问题,在添加到数据库之前需要进行双重检查.这就是为什么我们坚持使用GUID但我不确定他们的安全性是出于这些目的.

以下是连续4次UUIDGEN输出:

c44dc549-5d92-4330-b451-b29a87848993
d56d4c8d-bfba-4b95-8332-e86d7f204c1c
63cdf958-9d5a-4b63-ae65-74e4237888ea
6fd09369-0fbd-456d-9c06-27fef4c8eca5
Run Code Online (Sandbox Code Playgroud)

以下是其中4个Guid.NewGuid():

0652b193-64c6-4c5e-ad06-9990e1ee3791
374b6313-34a0-4c28-b336-bb2ecd879d0f
3c5a345f-3865-4420-a62c-1cdfd2defed9
5b09d7dc-8546-4ccf-9c85-de0bf4f43bf0
Run Code Online (Sandbox Code Playgroud)

.net uuid guid

7
推荐指数
1
解决办法
3373
查看次数

如何从C#中的IEnumerable <>中获取随机大小的随机条目列表

我有以下课程:

public class Question
{
    public int    QuestionId { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我有一个变量:

IEnumerable<Question> _questions = GetQuestions.Get();
Run Code Online (Sandbox Code Playgroud)

如何收集变量_questions中的问题集合并随机返回集合中1到4个随机问题的列表?

c#

3
推荐指数
1
解决办法
97
查看次数

使用GUID是一种生成随机字符串和数字的有效方法吗?

可能重复:
System.Guid.NewGuid()的随机性如何?

基于这个问题,我想知道是否使用GUID生成一个随机的字符串和数字有任何缺陷吗?

因此,例如,如果我想要一个随机字符串和32个或更少字符的数字,我可以使用以下C#代码:

string s = Guid.NewGuid().ToString().Replace("-", "");
Run Code Online (Sandbox Code Playgroud)

如果长度需要小于32,我将截断字符串,如果需要更长,我会将多个GUID一起添加.

这种方法有哪些缺陷?

在我写完之后,我意识到一个缺陷就是它只会有字母a到f所以我会修改这个问题:

这是一个真正随机的6个字符和10个数字的序列吗?

.net c# random

2
推荐指数
2
解决办法
5480
查看次数

从静态类中选择一个随机静态变量

我有一个静态类中的静态变量列表.

namespace Test
{
  public static class Numbers
  {
    public static readonly int One = 1;
    public static readonly int Five = 5;
    public static readonly int Ten = 10;
    public static readonly int Eleven = 11;
    public static readonly int Fifteen= 15;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在课堂上随机选择一个变量.我怎样才能做到这一点?

int randomVariable = SomeFunction(Numbers);
Run Code Online (Sandbox Code Playgroud)

.net c# static

1
推荐指数
1
解决办法
523
查看次数

将Guid转换为字符串

我正在创建一个应用程序,我想尝试使用GUID.我首先使用实体​​框架代码和LINQ,所以我认为最简单的方法是使用

string guid = Guid.NewGuid().ToString();
var acc = new v_Account();   
acc.v_AcctGuid = guid;
Run Code Online (Sandbox Code Playgroud)

然后将我的GUID存储为数据库中的类型字符串.这是一种不好的做法吗?GUID真的只是一个全局唯一的随机生成的字符串吗?

我很确定它会起作用,但我不想在未来遇到问题或通过这样做造成漏洞.

c# linq entity-framework guid ef-code-first

0
推荐指数
1
解决办法
1111
查看次数