генерировать случайные слова из списка слов в c программирования - PullRequest
0 голосов
/ 15 августа 2010

эй, я хочу спросить, есть ли у меня список слов, скажем, 'тигр, лев, слон, зебра, лошадь, верблюд, олень, крокодил, кролик, кошка' как я могу генерировать 5 слов из списка случайным образом вс программированием?например:

тигр, зебра, кошка, олень, лошадь

или

крокодил, кролик, верблюд, зебра, слон

ect

Заранее спасибо: 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; 
}

Ответы [ 3 ]

3 голосов
/ 15 августа 2010

Поместите слова в массив.Создайте 5 (или что угодно) псевдослучайных чисел в правильном диапазоне (0..array_size-1).Используйте эти числа, чтобы выбрать слова из массива.

1 голос
/ 15 августа 2010

Вы можете сделать следующее:

  1. У вас уже есть массив, содержащий элементы (имена животных)
  2. Вы можете получить доступ к каждому элементу по индексу, скажем k и вы можете получить доступ к таким элементам массива, как этот arr2[k].
  3. Теперь вам нужно каждый раз получать случайное число, назначаемое k.Это можно сделать с помощью функции rand стандартной библиотеки, которую вы, вероятно, вызывали, но неправильно
  4. После того, как вы распечатали значение, вам нужно его отслеживать, поэтому используйте целочисленный массив check[SIZE] = {0,} и перед печатью arr2[k], проверьте, если check[k]==0, а затем напечатайте значение.После печати установите arr2[k]=1.

Как только вы закончите с этим много, пожалуйста, вставьте свой код.Надеюсь, вы поймете логику этой проблемы.

0 голосов
/ 15 августа 2010

В иллюстративных целях это 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();
    }
}
...