2014-04-09 14 views
5

c'è un modo per consentire al programma di selezionare un numero casuale compreso tra 1 e 1.000 senza importare 'random'?Random int senza importare 'random'

L'aiuto sarebbe molto apprezzato.

+0

Perché non puoi semplicemente importare 'random'? Potresti iniziare a scrivere il tuo codice di generazione casuale del numero, ma perché dovresti? – Marius

+1

Certo, scrivi solo il tuo PRNG, o forse leggi dal sistema (ad esempio/dev/random). –

+2

Ovviamente c'è: http://xkcd.com/221/ (tradotto banalmente in Python). In altre parole, è più probabile che tu riceva risposte utili se ci hai detto dove stavi andando. – NPE

risposta

0

presupponendo che si desidera numeri interi.

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

Ehi, ho dimenticato di dire che non posso importare nulla. Questa è una delle regole per questo compito. A proposito, questa è una piccola parte dei compiti, non è che ti sto chiedendo ragazzi per scrivere il programma per me. Quindi per favore non arrabbiarti con me :) – user3353391

+3

Il tuo insegnante è un idiota. Puoi dire loro che l'ho detto. Quando la loro schiena è girata, aggancia il bottone multiplo della loro calcolatrice. E dì "speri di vivere secondo ciò che predichi". – Back2Basics

+0

È possibile eseguire una configurazione del tipo di ruota della roulette in cui si hanno colpire la barra spaziatrice e leggere i millisecondi dall'orologio del computer. – Back2Basics

3

Sulla base 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) 

Esempio:

print(randint(1, 1000)) 

Si potrebbe anche implement random_bytes() using PRNG.