Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Find X9 Ultra è lo smartphone che tanti aspettavano, e finalmente è arrivato anche in Italia. Abbiamo provato il flagship di OPPO per diverse settimane, e siamo volati fino in Cina alla sua presentazione ufficiale. Tutto gira intorno al suo incredibile comparto fotografico in collaborazione con Hasselblad e con un totale di sei fotocamere. Il resto è un mix di specifiche di altissimo livello, così come il prezzo. Vi raccontiamo tutto nella nostra recensione completa.
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-04-2013, 15:13   #1
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
[Python] Generare valori casuali

Mi servirebbe scrivere una funzione che, dati due valori, restituisca valori casuali compresi fra questi due.
Questo è ciò che ho scritto:

Codice:
def Rand(x, y):
 r = random.random()*((x/random.random()+(y/random.random()))
 while r<x or r>y:
  r = random.random()*((x/random.random()+(y/random.random()))
 print r
Già così funziona, pure gli estremi sono sempre teoricamente ottenibili (ammesso che abbia ben eseguito i miei calcoli). Tuttavia, se metto due estremi molto ravvicinati, ad esempio 0 e 0.0000000004, la funzione si blocca, scompare il ">>>" dal compilatore e non posso più fare nulla
Qualche soluzione o spiegazione?
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2013, 15:53   #2
GByTe87
Senior Member
 
L'Avatar di GByTe87
 
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
Quote:
Originariamente inviato da Heretic Curse Guarda i messaggi
Mi servirebbe scrivere una funzione che, dati due valori, restituisca valori casuali compresi fra questi due.
Questo è ciò che ho scritto:

Codice:
def Rand(x, y):
 r = random.random()*((x/random.random()+(y/random.random()))
 while r<x or r>y:
  r = random.random()*((x/random.random()+(y/random.random()))
 print r
Già così funziona, pure gli estremi sono sempre teoricamente ottenibili (ammesso che abbia ben eseguito i miei calcoli). Tuttavia, se metto due estremi molto ravvicinati, ad esempio 0 e 0.0000000004, la funzione si blocca, scompare il ">>>" dal compilatore e non posso più fare nulla
Qualche soluzione o spiegazione?
Probabilmente l'interprete è in un ciclo quasi-infinito in attesa che il numero generato rispetti i criteri desiderati.
Io genererei un singolo numero casuale e poi lo utilizzerei per scegliere un valore all'interno del range richiesto.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO
GByTe87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2013, 17:02   #3
Heretic Curse
Member
 
Iscritto dal: Mar 2011
Messaggi: 125
Quote:
Originariamente inviato da GByTe87 Guarda i messaggi
Probabilmente l'interprete è in un ciclo quasi-infinito in attesa che il numero generato rispetti i criteri desiderati.
Io genererei un singolo numero casuale e poi lo utilizzerei per scegliere un valore all'interno del range richiesto.
ok grazie
Heretic Curse è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2013, 19:44   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12966
Quote:
Originariamente inviato da Heretic Curse Guarda i messaggi
Mi servirebbe scrivere una funzione che, dati due valori, restituisca valori casuali compresi fra questi due.
Questo è ciò che ho scritto:

Codice:
def Rand(x, y):
 r = random.random()*((x/random.random()+(y/random.random()))
 while r<x or r>y:
  r = random.random()*((x/random.random()+(y/random.random()))
 print r
Già così funziona, pure gli estremi sono sempre teoricamente ottenibili (ammesso che abbia ben eseguito i miei calcoli). Tuttavia, se metto due estremi molto ravvicinati, ad esempio 0 e 0.0000000004, la funzione si blocca, scompare il ">>>" dal compilatore e non posso più fare nulla
Qualche soluzione o spiegazione?
Puoi costruire matematicamente ciò che ti serve, senza ricorrere ad un ciclo, in particolare:

Codice:
def Rand(x, y):
   return x + (y-x)*random.random()
In pratica prendi x come base da cui partire, e poi sommi (y-x) pesata con random() che è un numero da 0 a 1.

Nei due casi estremi avresti:

Codice:
x + (y-x) * 0 = x

x + (y-x) * 1 = x + y - x = y
PS: ho appena notato che Python ha anche un metodo random.randint(a, b) che fa al caso tuo, se il tuo obiettivo è generare numeri interi compresi in un intervallo.

Ultima modifica di WarDuck : 12-04-2013 alle 19:50.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Tute spaziali AxEMU per Artemis: Axiom S...
Nutanix Government Cloud Clusters arriva...
Troy Baker lavora a un progetto tutto su...
Motorola Edge 60 Neo è il compatt...
Stretto di Hormuz, finti funzionari iran...
Dragon Ball Xenoverse 3 annunciato uffic...
WINDTRE BUSINESS potenzia i servizi IoT ...
OPPO rinnova l'ecosistema: arrivano Watc...
OPPO Find X9 Ultra ufficiale: debutta il...
Renault Twingo: esposta a Milano per far...
Intel vuole cambiare: overclocking anche...
Anche PlayStation introduce la verifica ...
Samsung ed Sk hynix, i bonus per gli ope...
Windows 11 velocizza Esplora File: ecco ...
Funzioni nascoste nelle librerie ADLX Ra...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v