相关疑难解决方法(0)

随机字符串生成器返回相同的字符串

我已经开发了一个随机字符串生成器,但它的行为并不像我希望的那样.我的目标是能够运行两次并生成两个不同的四个字符随机字符串.但是,它只生成一个四字符随机字符串两次.

这是代码和输出的示例:

private string RandomString(int size)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;
    for (int i = 0; i < size; i++)
    {
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));                 
        builder.Append(ch);
    }

    return builder.ToString();
}

// get 1st random string 
string Rand1 = RandomString(4);

// get 2nd random string 
string Rand2 = RandomString(4);

// create full rand string
string docNum = Rand1 + "-" + Rand2;
Run Code Online (Sandbox Code Playgroud)

......输出看起来像这样:UNTE-UNTE ......但看起来应该像UNTE-FWNU

如何确保两个明显随机的字符串?

c# random

222
推荐指数
10
解决办法
29万
查看次数

使用Random和OrderBy是一个很好的shuffle算法吗?

我在Coding Horror上读过一篇关于各种shuffle算法的文章.我已经看到人们已经在某个地方对列表进行了洗牌:

var r = new Random();
var shuffled = ordered.OrderBy(x => r.Next());
Run Code Online (Sandbox Code Playgroud)

这是一个很好的shuffle算法吗?它是如何工作的?这样做是否可以接受?

c# algorithm shuffle

160
推荐指数
5
解决办法
4万
查看次数

如何播种随机类以避免获得重复的随机值

我在静态类中的静态方法中有以下代码:

Random r = new Random();
int randomNumber = r.Next(1,100);
Run Code Online (Sandbox Code Playgroud)

我在循环中有这个,我一直都这样randomNumber!

这里有什么建议?

c# random

110
推荐指数
5
解决办法
16万
查看次数

.NET短唯一标识符

我需要.NET中的唯一标识符(不能使用GUID,因为它对于这种情况来说太长了).

人们认为这里使用的算法是一个很好的候选人还是你有其他建议吗?

.net c# uniqueidentifier

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

HashSet是否保留了插入顺序?

HashSet.NET 3.5中引入的集合在使用迭代时是否保留了插入顺序foreach

文件指出,该集合没有排序,但它并没有说明插入顺序什么.预发布的BCL 博客条目表明它是无序的,但是本文声明它旨在保留插入顺序.我的有限测试表明,该顺序得以保留,但这可能是巧合.

.net hashset

62
推荐指数
4
解决办法
3万
查看次数

Random.Next始终返回相同的值

这真的很奇怪,我不明白为什么会这样.在foreach循环中,我正在迭代A类集合,并且对于每个类,我调用Count()方法,其中r1r2数字是从范围[-1,1]生成的.问题是 Random.Next为每个实例返回相同的"随机"数字.当第一个实例的结果为0和-1时,将从以下实例返回相同的结果.拜托,你能告诉我为什么会这样吗?另外,我在每个A类实例中都得不到不同的结果.这是代码:

class a
{
 Random rnd = new Random();
 private void Count()
 {
  int r1 = rnd.Next(-1, 1);
  int r2 = rnd.Next(-1, 1);
 }
}
class b
{
 List<a> listofA=new list<a>();
 foreach (a ACLASS in listofA)
 {
  ACLASS.Count();
 }
}
Run Code Online (Sandbox Code Playgroud)

c# random math

60
推荐指数
4
解决办法
6万
查看次数

.NET Framework:随机数生成器生成重复模式

编辑:这不是重复,它不是对如何使用随机数生成器的天真误解的结果.谢谢.

我似乎在System.Random类生成的数字中发现了重复模式.我正在使用"主"Random实例为第二个"主"Random实例生成种子.此主要Random实例生成的值显示重复模式.特别是,产生的第3个数字是非常可预测的.

下面的程序演示了这个问题.请注意,每次循环使用不同的种子值.

using System;

class Program
{
    static void Main(string[] args)
    {
            // repeat experiment with different master RNGs
        for (int iMaster = 0; iMaster < 30; ++iMaster)
        {
                // create master RNG
            var rngMaster = new Random(iMaster + OFFSET);

                // obtain seed from master RNG
            var seed = rngMaster.Next();

                // create main RNG from seed
            var rngMain = new Random(seed);

                // print 3rd number generated by main RNG
            var ignore0 = rngMain.Next(LIMIT);
            var ignore1 = rngMain.Next(LIMIT);
            var randomNumber …
Run Code Online (Sandbox Code Playgroud)

.net c# random

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

多个随机数是相同的

可能重复:
随机数生成器仅生成一个随机数

一个初学者的问题.我有一个非常简单的程序,它绘制一条线,我想随机化位置,但每次我创建一个新的Random实例时,它返回相同的值.问题出在哪儿?谢谢.

private void Draw()
{
    Random random1 = new Random();
    int randomNumber1 = random1.Next(0, 300);
    Random random2 = new Random();
    int randomNumber2 = random2.Next(0, 300);
    Random random3 = new Random();
    int randomNumber3 = random3.Next(0, 300);
    Random random4 = new Random();
    int randomNumber4 = random4.Next(0, 300);
    System.Drawing.Graphics g = this.CreateGraphics();
    Pen green = new Pen(Color.Green, 5);
    g.DrawLine(green, new Point(randomNumber1, randomNumber2), 
                      new Point(randomNumber3, randomNumber4));
}

private void btndraw1_Click(object sender, EventArgs e)
{
    Draw();
}
Run Code Online (Sandbox Code Playgroud)

c# random

31
推荐指数
3
解决办法
4万
查看次数

生成随机,唯一的值C#

我已经搜索了一段时间并且一直在努力寻找这个,我正在尝试生成几个随机的,唯一的数字是C#.我正在使用System.Random,我正在使用DateTime.Now.Ticks种子:

public Random a = new Random(DateTime.Now.Ticks.GetHashCode());
private void NewNumber()
{
    MyNumber = a.Next(0, 10);
}
Run Code Online (Sandbox Code Playgroud)

NewNumber()经常打电话,但问题是我经常会重复数字.有些人建议因为我每次都是随机声明它,它不会产生随机数,所以我把声明放在我的函数之外.有什么建议或比使用更好的方法System.Random?谢谢

.net c# random unique

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

C#中"静态"Random.Next的正确方法?

为什么我需要创建一个Random类的实例,如果我想创建1到100之间的随机数....就像

Random rand = new Random();
rand.Next(1,100);
Run Code Online (Sandbox Code Playgroud)

Random类是否有任何静态函数来做同样的事情?喜欢...

Random.Next(1,100);
Run Code Online (Sandbox Code Playgroud)

我不想不必要地创建一个实例

c# random

27
推荐指数
6
解决办法
3万
查看次数

标签 统计

c# ×9

random ×7

.net ×4

algorithm ×1

hashset ×1

math ×1

shuffle ×1

unique ×1

uniqueidentifier ×1