Как сгенерировать случайное число из N цифр, используя строку в качестве семени в Perl - PullRequest
1 голос
/ 05 января 2012

Я ищу способ генерирования 4-значного случайного числа, используя путь к файлу в качестве ввода. Я пытаюсь дать уникальное имя для каждой установки программного обеспечения на моем компьютере, и имя software_product_name + 4 digit random number. Очень редко дважды устанавливают одно и то же программное обеспечение, но если это так, я не хочу, чтобы в итоге получилось одно и то же имя. У меня есть другой способ получить название программного обеспечения.

Существует ли эффективный способ генерирования 4-значного случайного числа, которое могло бы привести к разному числу для разных путей?

Ответы [ 2 ]

3 голосов
/ 18 января 2012
#!/usr/bin/perl

print "Content-type: text/html\n\n";

my @Chars = ('1'..'9');
my $Length = 4;
my $Number = '';

for (1..$Length) {
$Number .= $Chars[int rand @Chars];
}

print $Number;
0 голосов
/ 06 января 2012

Если вы думаете об этом, вы не можете этого сделать, и вы не должны этого делать. Вы хотите создать что-то без коллизий, чтобы вы могли различать различные установки. Вы не сможете различить бесконечное количество возможных путей с помощью четырехзначного числа.

Похоже, ваше программное обеспечение должно быть достаточно умным, чтобы не выбрасывать существующий каталог и устанавливать по заданному пользователем пути.

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

...