2014-01-17 3 views
1

Я пытаюсь написать код, который будет случайным образом выбирать между 1 и 4 элементами списка 50 раз. Список, с которым я работаю, - ['nu', 'ne', 'na', 'ku', 'ke', 'ka'].Случайно выберите x количество элементов из списка

Так, по существу, я хочу, чтобы это что-то вроде вывода

nukuna 
ke 
keka 
nuka 
nane 
nanenu 
nu 
nukekanu 
kunu 
... 

50 раз

+0

Какой скрипт/программирования вы используете? – Matt

+0

На каком языке вы используете? – arshajii

+0

Я использую Python – user3207653

ответ

-1
int i=0; 
StringBuffer stb=new StringBuffer(); 
String[] arr= {"nu", "ne", "na", "ku", "ke", "ka"}; 
while(i<50){ 
int idx = new Random().nextInt(arr.length); 
stb.append(arr[idx]); 

i++; 
} 
+0

Это не соответствует требованиям. Он просто передает 50 случайных элементов, а не 50 строк из четырех случайных элементов. – Harald

+0

oh это код Java>, потому что вы упомянули язык позже. –

+0

Я понял, но спасибо в любом случае – user3207653

1

В Python:

import random 

input = [...] # Your input strings 
output = '' 

random.seed() # Seed the random generator 

for i in range(0,len(input)): 
    N = 1+random.randrange(4) # Choose a random number between 1 and 4 
    for j in range(0,N): # Choose N random items out of the input 
     index = random.randrange(len(input)-j) 
     temp = input[index] 
     input[index] = input[len(input)-j-1] 
     input[len(input)-j-1] = temp 
     output += temp 
    output += ' ' 

print output 

В C:

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

char* input[NUM_OF_INPUT_STRINGS] = {...}; // Your input strings 
char output[MAX_SIZE_OF_OUTPUT+1]; 

// Seed the random generator 
srand((unsigned int)time(NULL)); 

for (int i=0; i<NUM_OF_INPUT_STRINGS; i++) 
{ 
    // Set the output string empty 
    output[0] = 0; 
    // Choose a random number between 1 and 4 
    int N = 1+(rand()%4); 
    // Choose N random items out of the input 
    for (int j=0; j<N; j++) 
    { 
     int index = rand()%(NUM_OF_INPUT_STRINGS-j); 
     char* temp = input[index]; 
     input[index] = input[NUM_OF_INPUT_STRINGS-j-1]; 
     input[NUM_OF_INPUT_STRINGS-j-1] = temp; 
     strcat(output,temp); 
    } 
    // Print the output 
    printf("%s ",output); 
} 
+0

Спасибо, но я получаю ошибку «индекс индекса вне диапазона» в Python. Как я могу это исправить? – user3207653

+0

Прекрасно работает для меня; вы подтвердили, что массив 'input' содержит строки' NUM_OF_INPUT_STRINGS'? –

+0

Еще лучше - я заменил 'NUM_OF_INPUT_STRINGS' на' len (input) ', поэтому вы можете просто поместить любое количество строк в массив' input' ... –

0

Попробуйте с этим Python код: языки

import random 

my_list = ['nu', 'ne', 'na', 'ku', 'ke', 'ka'] 

for i in xrange(0,50): 
    tmp_string = '' 
    count = random.randrange(1,4)  # choose a random between 1 and 4 
    for j in xrange(0, count): 
     # add a random member of the list to the temporary string 
     tmp_string = tmp_string + random.choice(my_list) 
    print tmp_string   # print each final string 
+0

Я вижу, что он отредактировал ваше сообщение и проголосовал за него, как и он. Этот пользователь должен быть заблокирован с этого веб-сайта. Я голосую, чтобы «компенсировать» вам за ущерб. –

+1

Да, я сделал то же самое с твоим, спасибо! –

+0

Спасибо. Кстати, в дополнение к тому, что вы упоминали в комментарии к его ответу (тот факт, что он опубликовал ответ, идентичный предыдущему, более чем через год после его публикации), вы также можете проверить (и, возможно, верните) его редактирование на свой собственный ответ. В моем случае он не только проголосовал за ответ, но и изменил его с рабочего кода на нерабочий код. –

Смежные вопросы