当前位置: 首页 > 知识库问答 >
问题:

可以从c#中的数字生成随机数序列?

洪和风
2023-03-14

stackoverflow社区,

 So, in my case it should be: 
    20 05 53;
    02 25 53 31 15;
    15 53 31;
    25 53 31 15;
    and etc...

给定数字的数字可以交换。在一个序列中,同一个数字只能使用一次(例如20和02、15和51,它们只能在一个序列中使用一次)好吧,我尝试了几个代码组合,但没有一个成功。。。

for (int i = 0; i < data.Length; i++)
{
   string lastDigit = data[i].Substring(1, 1); // setting last digit of the first number
   string generatedSequence = "";
   for (int c = 0; c < data.Length; c++)
   {
     if (lastDigit == data[c].Substring(0, 1)) //if last digit of previous number equals to first digit of next number 
     {
        lastDigit = data[c].Substring(1, 1); // second digit of the number
        generatedSequence = generatedSequence + " " + data[c];
     }
   }
}

共有1个答案

东方权
2023-03-14

如你所愿,我把这个答案翻译成了C#

类Domino:`

public class Domino {
    public Domino(int a, int b)
    {
        A = a;
        B = b;
    }
    public int A { get; set; }
    public int B { get; set; }


    public Domino Flipped()
    {
        return new Domino(B, A);
    }

    public override string ToString()
    {
        return $"[{A}/{B}]";
    }

}

算法:

    public static void GetList(List<Domino> chain, List<Domino> list)
    {
        for (int i = 0; i < list.Count; i++)
        {
            Domino domino = list[i];

            if (CanAppend(domino, chain))
            {
                chain.Add(domino);
                PrintList(chain);
                list.Remove(domino);
                //You need to create these two lists via the new keyword because 
                //we do not want to keep up the reference to the "old" list. 
                //Otherwise changes in the recoursion would also change the top-level list.
                GetList(new List<Domino>(chain), new List<Domino>(list));
                list.Insert(i, domino);
                chain.Remove(domino);
            }

            var flippedDomino = domino.Flipped();
            if (CanAppend(flippedDomino, chain))
            {
                chain.Add(flippedDomino);
                PrintList(chain);
                list.Remove(domino);
                GetList(new List<Domino>(chain), new List<Domino>(list));
                list.Insert(i, domino);
                chain.Remove(flippedDomino);
            }
        }
    }

两种辅助方法:

    public static bool CanAppend(Domino domino, List<Domino> items)
    {
        return items.Count == 0 || items.Last().B == domino.A;
    }
    private static void PrintList(List<Domino> items)
    {
        Console.WriteLine();
        foreach (var item in items)
        {
            Console.Write(item.ToString());
        }
    }

这就是你如何使用它:

List<Domino> list = new List<Domino>();    
// [3/4] [5/6] [1/4] [1/6]   
list.Add(new Domino(3, 4));    
list.Add(new Domino(5, 6));    
list.Add(new Domino(5, 6));    
list.Add(new Domino(1, 4));    
list.Add(new Domino(1, 6));    
List<Domino> chain = new List<Domino>();    
GetList(chain, list);
 类似资料:
  • 我正在尝试实现一个函数int choose_N(void),它生成并返回一个随机的整数列表N(最多四个整数)。我不确定我是否以正确的方式使用了rand(),但这是我目前所拥有的: 这样循环会有用吗?时间是否以正确的方式初始化?

  • 本文向大家介绍C# 生成随机数的代码,包括了C# 生成随机数的代码的使用技巧和注意事项,需要的朋友参考一下 以上就是本文的全部内容了,希望大家能够喜欢,能够对大家学习C#有所帮助。

  • 问题 你需要生成在一定范围内的随机数,但你也需要对发生器进行“生成种子”操作来提供可预测的值。 解决方案 编写你自己的随机数生成器。当然有很多方法可以做到这一点,这里给出一个简单的示例。 该发生器绝对不可以以加密为目的! class Rand # 如果没有种子创建,使用当前时间作为种子 constructor: (@seed) -> # Knuth and Lewis' impro

  • 本文向大家介绍objective-c中生成随机数的方法,包括了objective-c中生成随机数的方法的使用技巧和注意事项,需要的朋友参考一下 本文简述objective-c中生成随机数的几种常见的方法,分享给大家,希望能给大家带来一点借鉴价值。具体如下: 1)、arc4random()方法:比较精确不需要生成随即种子 使用方法如下 : 通过arc4random() 获取0到x-1之间的整数的代码

  • 我想用骰子做一个游戏,我需要在其中加入随机数(以模拟骰子的侧面。我知道如何在1到6之间进行)。使用 不能很好地工作,因为当我运行程序几次时,我得到的输出是: 所以我想要一个每次都会生成不同随机数的命令,而不是连续5次生成相同的随机数。是否有命令可以执行此操作?

  • 问题内容: 我想要一个可以生成值的伪随机序列的函数,但是该序列在每次运行时都可以重复。我想要的数据必须合理地随机分布在给定的范围内,而不必是完美的。 我想根据随机数据编写一些可以对其进行性能测试的代码。我希望每台机器上的每个测试运行的数据都相同,但是出于存储原因,我不想随测试一起运送随机数据(最终可能会变成许多兆字节)。 该模块的库似乎没有说相同的种子在任何机器上总是给出相同的序列。 编辑:如果您