[Python] Generare dati artificialmente
Stefano Dal Pra
s.dalpra a gmail.com
Mar 3 Lug 2012 11:21:16 CEST
Ciao,
mi ero trovato a scrivermi qualcosa di simile tempo fa;
ti copioincollo quel che ho fatto io, penso si possa adattare facilmente:
import random
#puoi mettere quanti nomi vuoi, con "frequenze assolute"
d = {'T':20,'C':80}
#calcola distribuzione cumulata
def cdistr(d):
L = d.items()
L.sort()
X = sum(x[1] for x in L) + 0.0
x = 0
S = [0] * len(L)
for n,t in enumerate(L):
x += t[1]/X
S[n] = (n,t[0],x)
return S
#ricerca binaria su lista di tuple di 3 elementi ordinata rispetto al terzo
def bsearch(L,y0,key=lambda x : x[2]):
n0,n1 = 0,len(L)-1
while n0+1 < n1:
n = (n0+n1) // 2
y = key(L[n])
if y > y0:
n1 = n
else:
n0 = n
if y0 < key(L[n0]):
return L[n0]
return L[n1]
#estrae un valore casuale secondo la distr di freq. F
def getrndval(F):
y = random.random()
t = bsearch(F,y)
return t[1]
#Verifica:
F = cdistr(d)
C = {}
#Facciamo 100000 prove
for n in xrange(10000):
tc = getrndval(F)
try:
C[tc] += 1
except KeyError:
C[tc] = 1
#Vediamo cosa viene:
>>> (C['T']+.0) / sum(C.values())
0.1968
#e ricordando che d = {'T':20,'C':80}
#abbiamo che 'T' esce circa il 20% delle volte, come giusto.
Spero ti torni grossomodo utile
Ciao
Stefano
2012/6/29 Antonio Piepoli <piepoli.antonio a gmail.com>
> Si mi rendo conto che finirņ a scrivermelo da solo ...
> Purtroppo chi gestisce quel sito non ha risposto alla mia domanda.
>
> Grazie anche per quel sito, provo a darci un'occhiata.
>
> Il giorno 28 giugno 2012 21:03, Marco Mariani <birbag a gmail.com> ha
> scritto:
>
>> 2012/6/28 Antonio Piepoli <piepoli.antonio a gmail.com>
>>
>> Sto cercando un sistema che generi tabelle. Ho trovato questo
>>> http://www.generatedata.com/#about ma purtroppo non forniscono nessuna
>>> informazione sulla statistica dei dati (quanti nomi ci sono? che
>>> distribuzione scelgono?).
>>>
>>> Qualcuno ne conosce altri ?
>>>
>>
>> io penso di avere usato questo, un paio di volte
>>
>> http://www.fakenamegenerator.com/order.php
>>
>>
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>>
>>
>
>
> --
> Antonio Piepoli
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120703/b4f0369a/attachment.html>
Maggiori informazioni sulla lista
Python