Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
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


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...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Huawei punta sul canale europeo: per il ...
Ubuntu 26.04: le GPU guadagnano il 17% i...
La Commissione UE registra l'iniziativa ...
SSD troppo cari? La soluzione alla crisi...
Anteprima mondiale Hyundai IONIQ 3: segm...
Fintool sbarca su Microsoft 365: arrivan...
Hanno chiesto 1 dollaro per salvare un M...
Arriva AgentExchange, il marketplace di ...
Blizzard fa chiudere Turtle WoW: perché ...
Claude Desktop e la modifica silenziosa ...
Blue Origin ha mostrato gli interni del ...
Linux alla pari di Windows in gioco: con...
Il rientro del secondo stadio del razzo ...
Il controller ufficiale Microsoft per Xb...
DJI Power 1000 Mini: la power station da...
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: 23:46.


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