Re: shuffling (randomizing) a series

*To*: mathgroup at smc.vnet.net*Subject*: [mg52896] Re: [mg52857] shuffling (randomizing) a series*From*: Sseziwa Mukasa <mukasa at jeol.com>*Date*: Thu, 16 Dec 2004 03:40:32 -0500 (EST)*References*: <200412150926.EAA10600@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Dec 15, 2004, at 4:26 AM, George Szpiro wrote: > Hello, > > I would like to put a series of numbers (of the order of 10^7 numbers) > into > random order, i.e., to shuffle it. In Excel I would simply add a > column next > to the column with the data, and then sort by the random number. But I > could > only do this for 64000 numbers. How can I do that in Mathematica for a > file with a > much larger series? Without knowing the larger context of what you are doing it's hard to answer your question. The expressions Needs["DiscreteMath`Combinatorica``"] p=RandomPermutation[10^7]; will give a random permutation of length 10^7. It takes about a minute to compute the permutation of that length on my machine. You can then use the permutation to access your list. Assuming it's in a variable named list: Table[list[[p[[i]]]],{i,Length[list]}] will return your list in random order. If you prefer not to read the entire list into memory, create the permutation as above then use an expressions of the form strm=OpenRead["filename"]; SetStreamPosition[strm,p[[n]]*(n-1)*size]; val=Read[strm, type]; will return the nth element of the permuted list where size is the size in bytes of each value and type is set appropriately. Since I don't know how the list is to be used it's hard to write expressions that optimally trade off disk access versus memory use. Regards, Ssezi

**Follow-Ups**:**Re: Re: shuffling (randomizing) a series***From:*DrBob <drbob@bigfoot.com>

**References**:**shuffling (randomizing) a series***From:*George Szpiro <george@netvision.net.il>