如何完成这项随机复杂的工作? C#

时间:2012-06-17 11:28:17

标签: c# .net random

我必须做一个软件,它真的很复杂,我的意思是,真的不知道如何完成它。有很多细节,但我会在这里写一个我需要的简单例子。

  1. 用户输入了多个单词。
  2. 用户输入文件夹
  3. 节目工作:
  4. 文件夹始终更改!在那个文件夹中,我有这样的文件:

    FILE1.TXT FILE2.TXT File3.txt File4.txt

    在文件中(所有相同的结构)。这就像file1.txt:

    WORD1 WORD2 字.. wordn

    也许File1.txt有100个单词,而File2.txt只有10个单词。

    如果用户输入的单词是10.软件必须经过尽可能多的文件,并从中获取10个单词。

    忘了提,10个字,不应该从每一行的开头。

    如果file1.txt是:

    word1 word2 word3 word 4 word5

    我想得到它的第三个字。或者word2,无所谓,但它必须是随机的。

    想法是尽快使流程随机化。在这种情况下,如果我可以从File1.txt获得1个单词,从File4.txt中获取1个单词来自File2.txt的2个单词和来自File3.txt的1个单词

    我怎么能随机化这些东西呢?

    谢谢!

2 个答案:

答案 0 :(得分:3)

这样的事情:

阅读所需文件。 将每个文件中的单词复制并拆分为数组。 从该数组中选择n个随机单词。

可能有很多方法可以解决这个问题,但上述内容非常简单。研究我列出的每个部分,你应该发现自己能够完成整个问题。如果问题看起来太大;分而治之!

答案 1 :(得分:1)

一种非常好的方法,可以满足您的需求,这是让软件快速运行的一般方法:

尽快尝试在应用程序中查看所需的接口 (即您的应用程序的边界是什么,应用程序的内容是什么 什么将从你的申请中删除。)

然后,如果抽象出一些接口,则提供一个随机的实现 界面,它只是做你期望的。 (例如,如果你想要一些 数据源,你可以有一个ISomeDataSource,它有一个方法ReadAll,和 你可以非常快速地提供一个具有ReadAll的RandomSomeDataSource 返回一些数据。

这样,你可以非常快速地解决这个复杂问题 灵活变化,你会看到你得到的东西。一旦你的“简单路径” 正在工作,你可以实现所有那些接口,然后具有 很有可能被测试,你的整体应用也可以 由产品所有者非常快速地检查,即他可以说出他想要的东西 当他看到他得到的东西。 (工作真的很好)

<强>混凝土

有一个InputWords接口,我们可以调用它

interface IWordInput
{
    void ReadWords(string[] words);
}

和文件夹输入

interface IFolderInput
{ 
    void InputFolder(string path);
}

和随机词源

interface IWordSource
{
    void ReadAllWords(string path, out string[] words);
    string GetRandomWord(string[] words);
}

并且来了:

 class RandomWordSource : IWordSource
 {
     public ReadAllWords(string path, out string[] words)
     {
         // somewhat like
         words = new[] string;
         words.Add("word1");
         words.Add("word2);

         // and so on
     }

     public string GetRandomWord(string[] words)
     {
          // sic
          return words.FirstOrDefault();
     }