【问题标题】:generate random words from the list of words in c programming从 c 编程中的单词列表中生成随机单词
【发布时间】:2010-08-15 04:36:16
【问题描述】:

嘿,我想问一下我是否有一个单词列表,可以说“老虎、狮子、大象、斑马、马、骆驼、鹿、鳄鱼、兔子、猫” 如何在 c 编程中从列表中随机生成 5 个单词? 例如:

虎、斑马、猫、鹿、马

鳄鱼、兔子、骆驼、斑马、大象

提前谢谢你:D

编辑

#include <stdio.h> 
#include <string.h>

#define SIZE 10 

int main () 
{ 

char arr2[SIZE][20] = { "tiger", "lion", "elephant", "zebra", "horse", "camel", "deer", "crocodile", "rabbit", "cat" }; 

int x = 0; 
srand(time(NULL));

while (x < SIZE - 5) 
{ 
    arr2 [x][20] = rand (); 
    printf ("%s\n", arr2[x]); 
    x++; 
}

system ("pause"); 
return 0; 
}

【问题讨论】:

  • 到目前为止你有什么?
  • arr2 [x][20] = rand (); 应该做什么?
  • 我不知道...我只是自己尝试过 :( 我的老师甚至不教我生成随机单词,我只是通过网络自己找到。
  • 你觉得这条线有什么作用?或者你想让它做什么?你不只是随便打了一些垃圾,对吧?

标签: c random word generator


【解决方案1】:

将单词放入数组中。在正确的范围(0..array_size-1)内生成 5 个(或其他)伪随机数。使用这些数字从数组中挑选单词。

【讨论】:

  • 我很模糊...我不明白。 :( 抱歉
【解决方案2】:

您可以执行以下操作:

  1. 您已经有一个包含元素(动物名称)的数组
  2. 您可以通过索引访问每个元素,比如k,也可以像arr2[k] 这样访问数组元素。
  3. 现在您需要每次都获得分配给 k 的随机数。这可以通过使用标准库的 rand 函数来完成,您可能以错误的方式调用了该函数
  4. 打印出一个值后,您需要对其进行跟踪,因此请使用整数数组check[SIZE] = {0,},在打印arr2[k] 之前,检查是否check[k]==0,然后打印该值。打印后设置arr2[k]=1

完成这些后,请粘贴您的代码。希望你能理解这个问题的逻辑。

【讨论】:

    【解决方案3】:

    出于说明目的,这是 C#,但我相信您可以相当轻松地转换为 C:

        static void Main(string[] args)
        {
            string[] words =     
                    { "tiger", "lion", "elephant", "zebra", "horse", 
                      "camel", "deer", "crocodile", "rabbit", "cat"  };
    
            string randomWords = RandomWords.GenerateRandomWordString(5, words); 
        }
    
    
    public static class RandomWords
    {
        private static readonly Random _random = new Random((int)DateTime.Now.Ticks);
    
        public static string GenerateRandomWordString(int numWords, string[] words)
        {
            int maxlen = words.Length;
    
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < numWords; i++)
            {
                // Note: in .NET, Random.Next(0, max) returns 
                // a value in range zero to max - 1
                sb.Append(words[_random.Next(0, maxlen)]);
                sb.Append(" ");
            }
    
            return sb.ToString().Trim();
        }
    }
    

    【讨论】:

    • 非常感谢!!但说真的,我不知道如何将其转换为 c...哦...我真的很愚蠢 =.="
    • @falcon:这可以通过学习、倾听之类的东西来治愈,真的
    • 我有这个 #include #include #define SIZE 10 int main () { char arr2[SIZE][20] = { "tiger", "lion ”、“大象”、“斑马”、“马”、“骆驼”、“鹿”、“鳄鱼”、“兔子”、“猫”};诠释 x = 0; srand(时间(NULL));而 (x
    • 嘿,我已经自己做了!!是的。我刚才的代码完全是垃圾,现在我已经做了一个新的,它的工作!但我不知道它是否真的工作正常。现在,当我运行它时,它可以生成五个随机单词。顺便说一句,感谢您的帮助:D
    猜你喜欢
    • 2013-12-17
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多