Hi,

I am trying to analyse sets of random vectors from a vector space GF(4)^36. 
For that I need to sample rather large sets (up to 10^6 vectors) many times 
(I would like it to be 1000, depending on how fast I can analyse).

I first thought my analysis was slow on such large sets but apparently just 
generating the sets takes an incredibly long time!

What is the preferred method for efficiently generating sets of random 
vectors? 

Setup:
space = VectorSpace(GF(4, 'a'), 36)
n = 10^6 


I have tried the following methods:

sample(space, n)
gives me
OverflowError: Python int too large to convert to C long

An attempt to sample indexes and then ask for space[i] instead:
sample(range(4^36), n)
also results in 
OverflowError: range() result has too many items

Trying to use space.random_element():
First I tried to get unique samples:
sequences = []
while len(sequences) < n:
    elem = space.random_element()
    if elem not in sequences:
        sequences.append(elem)
but this takes forever (and is impossible to interrupt). I let it run for 
several minutes and realized this was not going to work. I don't know how 
long it would actually take. I cannot use a set since the vectors are 
mutable (although, I must admit I haven't tried turning them immutable and 
seeing if using a set works better).

Then I decided not to care about the uniqueness:
%time sequences=[space.random_element() for __ in range(n)]
Best so far (in that it actually gives me a result). This takes about *60 
seconds* on my computer (based on a couple runs). Using xrange didn't 
affect the time.

Is it possible to improve this time? And I would prefer it if the set 
didn't contain any duplicates. If generating the dataset takes a whole 
minute, it would take me over two weeks just to generate 1000 datasets of 
this size...

Thanks in advance,
Gerli

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to