2010-08-09 43 views

Répondre

13

Que diriez-vous:

head -c SIZE /dev/random > file 
+3

Si vous pouvez sacrifier une certaine entropie vous pouvez aussi utilisez/dev/urandom à la place. Ce sera plus rapide car cela ne bloquera pas l'attente d'une augmentation du bruit ambiant –

+0

Bonne suggestion.Oui, il n'a pas besoin d'être parfaitement aléatoire. – Matt

+0

Parfait. Fait le travail. – Matt

0

Python. Appelez-le make_random.py

#!/usr/bin/env python 
import random 
import sys 
import string 
size = int(sys.argv[1]) 
for i in xrange(size): 
    sys.stdout.write(random.choice(string.printable)) 

Utilisez comme ça

./make_random 1024 >some_file 

qui va écrire 1024 octets à stdout, que vous pouvez capturer dans un fichier. Selon l'encodage de votre système, il ne sera probablement pas lisible en tant qu'Unicode.

0

Voici un rapide script que j'ai écrit en Perl. Il vous permet de contrôler la plage de caractères qui sera dans le fichier généré.

#!/usr/bin/perl 

if ($#ARGV < 1) { die("usage: <size_in_bytes> <file_name>\n"); } 

open(FILE,">" . $ARGV[0]) or die "Can't open file for writing\n"; 

# you can control the range of characters here 
my $minimum = 32; 
my $range = 96; 

for ($i=0; $i< $ARGV[1]; $i++) { 
    print FILE chr(int(rand($range)) + $minimum); 
} 

close(FILE); 

Pour utiliser:

./script.pl file 2048 

est ici une version plus courte, basée sur l'idée de S. Lott de sortie à STDOUT:

#!/usr/bin/perl 

# you can control the range of characters here 
my $minimum = 32; 
my $range = 96; 

for ($i=0; $i< $ARGV[0]; $i++) { 
    print chr(int(rand($range)) + $minimum); 
} 

Attention: C'est le premier script que j'ai écrit en Perl. Déjà. Mais cela semble fonctionner correctement.

0

Vous pouvez utiliser mon script generate_random_file.py (Python 3) que j'ai utilisé pour générer des données de test dans un de mes projets.

  • Il fonctionne à la fois sur Linux et Windows.
  • Il est très rapide, car il utilise os.urandom() pour générer les données aléatoires en blocs de 256 KiB au lieu de générer et d'écrire chaque octet séparément.
3

openssl rand peut être utilisé pour générer des octets aléatoires. La commande est ci-dessous:

openssl rand [bytes] -out [filename]

Par exemple, openssl rand 2048 -out aaa va générer un fichier nommé aaa contenant 2048 octets aléatoires.

2

Voici quelques façons:

Python:

RandomData = file("/dev/urandom", "rb").read(1024) 
file("random.txt").write(RandomData) 

Bash:

dd if=/dev/urandom of=myrandom.txt bs=1024 count=1 

utilisant C:

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

int main() 
{ 
    int byte_count = 1024; 
    char data[4048]; 
    FILE *fp; 
    fp = fopen("/dev/urandom", "rb"); 
    fread(&data, 1, byte_count, fp); 
    int n; 

    FILE *rand; 
    rand=fopen("test.txt", "w"); 
    fprintf(rand, data); 
    fclose(rand); 
    fclose(rand); 
} 
+0

Je ne pense pas que le code C est valide. Vous obtiendrez un coredump si vous essayez de l'exécuter. – schaiba

Questions connexes