2011-01-25 5 views
3
Random random = new Random(); 
int randomx = random.Next(0, 240); 

Это способ получить свое случайное число от 0 до 240, как получить только интегралы, разделяющие 5? (0 включены)Случайное число, разделенное на 5

0, 5, 10, 15, 20, 25 .. 240

+1

Что, нет -один с x = 1; while ((x% 5)> 0) x = random.Next (0,240); 'solution? :-) – paxdiablo

+1

@paxdiablo: Нет! Ты первый! –

+1

@paxdiablo: Теоретически возможно, что ваш код будет отложен в цикле для loooong time. –

ответ

18

Как об этом:

Random random = new Random(); 
return random.Next(0, 48) * 5; 

Или, если вам нужно 240 включены, так как ваш список указывает:

Random random = new Random(); 
return random.Next(0, 49) * 5; 
+0

Спасибо ... не могу поверить, что ответ был таким простым. –

+3

+1, но я думаю, что если вы хотите включить 240, ваш номер должен быть 49, а не 48. В верхнем конце это _exclusive_, поэтому наибольшее число, которое вы получите сейчас, - 47x5 или 235. Исправлено это для вас. – paxdiablo

+0

Вы правы :) – marcind

4
Random random = new Random(); 
int randomx = random.Next(0, 48) * 5; 
+0

давайте закроем это как дубликат: p (я знаю, он только на несколько секунд опоздал) –

7

Вот один (очень плохо, поэтому сообщества вики) способ сделать это:

Random random = new Random(); 
int randomx = 1; 
while ((randomx % 5) > 0) 
    randomx = random.Next (0,240); 

:-)

Смело downvote этот ответ в Лету. На самом деле это просто мешает другим публиковать его.

+3

Хорошо. Кто, черт возьми, поддержал меня? Это не полезно в _all! _ Кроме того, как индикатор того, что _not_ делать. – paxdiablo

+0

Не могу позволить этому ответу оставаться погребенным! –

+0

О, ну, как минимум, он никогда не встанет выше принятого ответа. Я полагаю, что это что-то :-) – paxdiablo

2

response to paxdiablo.

ПРЕДУПРЕЖДЕНИЕЮмор код не очень подходит для производственных сред

public static IEnumerable<int> RandomGen(int minValue, int maxValue) 
{ 
    var random = new Random(); 
    while (true) yield return random.Next(minValue, maxValue); 
} 

public static IEnumerable<int> RandomGen(int minValue, int maxValue, params Func<int, bool>[] predicates) 
{ 
    return RandomGen(minValue, maxValue) 
     .Where(rnd => predicates.Aggregate(true, (a, pred) => a && pred(rnd))); 
} 

Таким образом, вы можете просто

foreach (var x in RandomGen(0, 240, r => (r%5)==0)) 
{ 
// use x 
} 

(пожалуйста, не стреляйте меня)

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