2014-04-09 19 views
5

Gibt es eine Möglichkeit, das Programm eine Zufallszahl zwischen sagen 1 und 1000 wählen zu lassen, ohne 'zufällig' zu importieren?Random int ohne 'random' zu importieren

Hilfe wäre sehr willkommen.

+0

Warum können Sie nicht einfach 'random' importieren? Du könntest anfangen, deinen eigenen Zufallszahlen-Generierungscode zu schreiben, aber warum würdest du? – Marius

+1

Sicher, schreibe einfach deinen eigenen PRNG, oder lies vielleicht vom System (z. B./dev/random). –

+2

Natürlich gibt es: http://xkcd.com/221/ (trivial in Python übersetzt). Anders gesagt, Sie würden eher nützliche Antworten erhalten, wenn Sie uns sagen würden, wohin Sie damit gehen würden. – NPE

Antwort

0

vorausgesetzt, Sie wollen Ganzzahlen.

import numpy as np 
np.random.randint(1,1000) 
+0

Hey, ich habe vergessen zu erwähnen, dass ich nichts importieren kann. Dies ist eine der Regeln für diese Hausaufgaben. Übrigens, das ist ein kleiner Teil der Hausaufgaben, es ist nicht so, als würde ich euch bitten, das Programm für mich zu schreiben. Also bitte sei nicht sauer auf mich :) – user3353391

+3

Dein Lehrer ist ein Idiot. Du kannst ihnen sagen, dass ich es gesagt habe. Wenn ihr Rücken gewendet ist, kleben Sie den Multiplikator ihres Rechners mit Sekundenkleber an. Und sag "hoffe, du lebst nach dem, was du predigst". – Back2Basics

+0

Sie könnten ein Roulette-Rad-Setup machen, wo Sie sie die Leertaste drücken und die Millisekunden von der Computeruhr lesen. – Back2Basics

3

Basierend auf random source code:

def randint(a, b): 
    "Return random integer in range [a, b], including both end points." 
    return a + randbelow(b - a + 1) 

def randbelow(n): 
    "Return a random int in the range [0,n). Raises ValueError if n<=0." 
    if n <= 0: 
     raise ValueError 
    k = n.bit_length() 
    numbytes = (k + 7) // 8 
    while True: 
     r = int.from_bytes(random_bytes(numbytes), 'big') 
     r >>= numbytes * 8 - k 
     if r < n: 
      return r 

def random_bytes(n): 
    "Return n random bytes" 
    with open('/dev/urandom', 'rb') as file: 
     return file.read(n) 

Beispiel:

print(randint(1, 1000)) 

Sie könnten auch implement random_bytes() using PRNG.