我有以下功能:
//Function to get random number
public static int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)
我怎么称呼它:
byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)
如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.
为什么会这样?
对于身份验证令牌,是否有针对C#3.0(.NET Framework 3.5)的加密安全伪随机数生成器(CSPRNG)的快速实现?
有一个库可以生成随机数,那么为什么没有用于生成随机字符串的库?
换句话说,如何生成随机字符串,并指定所需的长度,或更好,在您想要的规范上生成唯一字符串,即指定长度,我的应用程序中的唯一字符串对我来说已经足够了.
我知道我可以创建一个Guid(全球唯一的标识符),但是它们需要更长,更长.
int length = 8;
string s = RandomString.NextRandomString(length)
uniquestringCollection = new UniquestringsCollection(length)
string s2 = uniquestringCollection.GetNext();
Run Code Online (Sandbox Code Playgroud) Task.Factory.StartNew(() =>
{
new Class1();
})
Task.Factory.StartNew(() =>
{
new Class2();
})
Run Code Online (Sandbox Code Playgroud)
在class1和class2的构造函数中,我有:
var timeout = new Random().Next(0, 5000);
Debug.Print(timeout.ToString());
Run Code Online (Sandbox Code Playgroud)
随机值'timeout'在两个类中始终相同.我不明白为什么..
如果我在创建任务之间添加一个暂停,那么它就不一样了.
编辑:
我不明白这与" 随机字符串生成器返回相同的字符串 "有什么关系.
他正在该方法中创建随机实例.我在完全不同的任务中调用它,因此它们应该彼此独立.
可能重复:
c#随机字符串生成器
我需要生成一个给定长度的随机字符串.到目前为止这是我的代码.问题是随机字符串就像"RRRRRR"或"SSSSS"每次都是相同的字母.就在我重新启动应用程序时,字母改变了.我需要像"asrDvgDgREGd"这样的东西
public string GenerateChar()
{
Random random = new Random();
return Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))).ToString();
}
public string GenerateChar(int count)
{
string randomString = "";
for (int i = 0; i < count; i++)
{
nahodneZnaky += GenerateChar();
}
return randomString;
}
Run Code Online (Sandbox Code Playgroud) 我的设备具有唯一的序列号(字符串增量)例如:AS1002和AS1003.
我需要找出一种算法来为每个序列号生成一个唯一的激活密钥.
对此最好的方法是什么?
谢谢 !
(这必须离线完成)
注意:为简洁起见,以下内容无法区分随机性和伪随机性.此外,在此上下文中,约束意味着给定的最小值和最大值之间)
本System.Random类提供随机生成整数,双打和字节数组.使用Random.Next,可以轻松生成类型为布尔值,字符,(S)字节,(U)Int16,(U)Int32的随机约束值.使用时Random.NextDouble(),可以类似地生成Double和Single类型的约束值(就我对此类型的理解而言).随机串生成(给定长度和字母的)已经 也 被 解决 之前.
考虑剩余的原始数据类型(不包括Object):Decimal和(U)Int64.他们的随机生成也已被解决(Decimal,(U)Int64使用Random.NextBytes()),但不受限制.理论上可以使用拒绝采样(即循环直到生成的值是所需范围),但这显然不是一个实际的解决方案.归一化NextDouble()不起作用,因为它没有足够的有效数字.
简而言之,我要求正确实现以下功能:
long NextLong(long min, long max)
long NextDecimal(decimal min, decimal max)
Run Code Online (Sandbox Code Playgroud)
请注意,由于System.DateTime基于ulong,第一个函数也允许随机约束生成此类结构(类似于此处,仅在刻度而不是分钟内).
我生成一个包含62个选项的字符串^ 6个字母= 56,800,235,584
但是在运行代码时,它会重复相同的字符串,然后每200,200次重复一次
这里有什么问题?
顺便说一句:这段代码基于这里的答案
class Program
{
static void Main(string[] args)
{
var d = new Dictionary<string, bool>();
for (int i = 0; ; i++)
{
var s = GenerateString(6);
try
{
d.Add(s, false);
}
catch (Exception ex)
{
Console.WriteLine(String.Format("{0} - {1} - {2}", i, s, ex.Message));
i = 0;
}
}
Console.ReadKey();
}
static Random _rnd = new Random();
public static string GenerateString(int len)
{
const string bigLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string smallLetters = "abcdefghijklmnopqrstuvwxyz"; …Run Code Online (Sandbox Code Playgroud)