←2005-08-14 2005-08-15 2005-08-16→ ↑2005 ↑all
00:12:38 -!- CXI has quit (Read error: 104 (Connection reset by peer)).
00:13:00 -!- CXI has joined.
00:23:13 -!- et has quit (Read error: 110 (Connection timed out)).
00:28:39 -!- GregorR has quit (Read error: 110 (Connection timed out)).
00:35:32 -!- int-e has quit ("Bye!").
00:55:59 -!- GregorR_ has joined.
00:56:01 -!- GregorR_ has changed nick to GregorR.
01:40:38 <{^Raven^}> Gah! Netsplit city :(
01:52:41 <jix> idea: the sourcecode of the lang has to pass some random-number-tests
01:53:49 -!- calamari has joined.
01:54:14 <calamari> hi
01:54:47 <jix> calamari: you missed my idea AND hi
01:54:52 <jix> 02:53:44<jix>idea: the sourcecode of the lang has to pass some random-number-tests
01:55:16 <calamari> which lang?
01:55:26 <jix> a new lang
01:55:43 <jix> it's hard to pass random number tests with non random data
01:55:47 -!- heatsink has joined.
01:55:52 <pgimeno> hi, and yup
01:55:54 <jix> hmm lets say it is impossible *g*
01:55:59 <jix> moin heatsink
01:56:12 <pgimeno> I disagree, pseudorandom data is not random data
01:56:18 <jix> i'm working on a little prng tester
01:56:31 <calamari> hi pgimeno
01:56:38 <heatsink> hi
01:56:46 <jix> pgimeno: yes but there are some tests that say how much random-alike data is..
01:56:58 <pgimeno> there are lots, each specialized in one kind of failure of PRNGs
01:57:05 <jix> yes
01:57:26 <calamari> just because somethign is statistically random doesn't mean that it is... it all depends on the source
01:58:07 <jix> calamari: i can generate true random data
01:58:16 <pgimeno> by definition (for certain definitions, anyway) a PRNG is not a RNG
01:58:21 <jix> pgimeno: yes
01:58:23 <calamari> if the only source is a computer algorithm, it's never really random
01:58:44 <jix> ack
01:59:02 <jix> http://www.fourmilab.ch/hotbits/
01:59:43 <pgimeno> http://www.lavarnd.org/ ;)
01:59:52 <calamari> jix: that's an outside source of randomness :)
02:00:08 <pgimeno> afaik there's an Intel chip with an integrated RNG
02:00:37 <calamari> yeah.. the old Atari's had random number hardware as well
02:01:07 <pgimeno> anyway, e.g. Malbolge would pass some (very loosy) randomness tests
02:01:24 <jix> calamari: that's why i said ack...
02:01:34 <jix> calamari: if the source is a computer algorithm its not random
02:01:38 <calamari> it was pretty good too, because some of the cheesier emulators using stock C rng's produced artifacts in starfields because of the lack of randomness
02:02:16 <calamari> jix: which tests will you be using?
02:02:48 <jix> calamari: i started with entropy
02:03:06 <jix> than a test i came up by myself
02:03:26 <jix> count all byte pairs
02:04:05 <jix> and generate entropy for every byte followed by another byte (entropy for all \x00\anychars... and \x01\anychar...)
02:04:18 <jix> take the difference of each entropy from 8 and square it
02:04:21 <jix> sum the whole thing
02:04:23 <jix> and output it
02:04:26 * calamari checks out an old book
02:04:34 <jix> maybe it has a name
02:04:38 <jix> but i came up with this
02:04:47 <jix> next thing i'm going to add is move-to-front entropy
02:04:57 <jix> move-to-front is an algorithm for reducing the entropy of data
02:05:02 <jix> shouldn't work with random data
02:05:12 <calamari> chi-square test
02:05:16 <jix> i'm going to add common test later
02:05:22 <jix> chi-square is a common test
02:05:34 <jix> monte-carlo-pi too
02:05:56 <jix> arithmetic mean too...
02:06:37 <calamari> mean dust coming off this book.. hasn't been opened in years.. hehe
02:06:53 <jix> i like random numbers
02:07:03 <jix> they are cool
02:07:29 <calamari> maybe you can improve upon my bf lcg
02:07:32 <pgimeno> I like them too
02:07:50 <calamari> generate random #'s in bf with a fixed amount of memory
02:07:56 <jix> calamari: implement a mersenne-twister-something
02:08:12 <calamari> hehe, was reading about that on wikipedia
02:08:21 <jix> ruby uses them
02:08:26 <jix> and they pass all test i did on them
02:08:26 <calamari> decided to go with the lcg
02:08:46 <jix> oh and rule30 rng was very bad
02:09:05 <pgimeno> MT works pretty well from a practical standpoint, yes
02:09:25 <pgimeno> (though the final mapping step sounds a bit suspicious to me)
02:09:59 <jix> oh and the c code i write is bad as always
02:12:49 <jix> does work doesn't it? for(i=0;i<256;alphabet_positions[i]=i++);
02:13:09 <jix> sets alphabet_positions to {0,1...,255}
02:13:38 <jix> in ruby i'd write alphabet_positions=(0..255).to_a
02:13:41 <jix> but ruby is to slow
02:14:20 <pgimeno> nope
02:14:29 <pgimeno> that assignment has side effects
02:14:42 <pgimeno> that's not valid C code IIRC
02:14:49 <jix> why not?
02:14:51 <jix> it compiles
02:15:10 <pgimeno> the LHS uses a value that changes in the RHS; the result is undefined
02:15:39 <jix> hm?
02:15:44 <jix> oh
02:16:19 <jix> i hate c.. but it's fast.. and easy
02:16:25 <pgimeno> please trust a little more on compiler optimizations :)
02:16:38 <jix> pgimeno: that wasn't speed optimization
02:16:43 <jix> that was code length optimizations
02:16:57 <jix> i hate to write much code for little things
02:17:01 <pgimeno> for (i=0; i<256; i++) alphabet_positions[i] = i; not that different :)
02:17:08 <jix> a few bytes ;)
02:17:22 <jix> hhmm 1 byte
02:17:32 <jix> but that's a byte
02:17:33 <pgimeno> ok, rename alphabet_positions to alpha_pos and save lots ;)
02:17:42 <jix> k
02:17:47 <pgimeno> j/k
02:17:56 <jix> no that's a good idea
02:17:58 <pgimeno> I tend to like descriptive programs
02:18:12 <jix> i too but c is long enough without them...
02:18:27 <jix> and pos is common for position
02:19:09 <jix> i like no variables at all
02:19:36 <jix> S K and I are enough..
02:24:14 <jix> char 0..256 *256:
02:24:15 <jix> Entropy: 8.000000000000
02:24:15 <jix> Move To Front Entropy: 0.067858437841
02:24:50 <jix> true random data:
02:24:51 <jix> Entropy: 7.997362466417
02:24:51 <jix> Move To Front Entropy: 7.997344450382
02:25:10 <jix> pseude random data is the same
02:25:19 <jix> -e+o
02:25:31 <heatsink> psodo random data is tho samo
02:26:02 <jix> heatsink: 1x-e+o at the right position
02:26:33 <heatsink> yea, i understood :/
02:27:12 * heatsink looks up movo to front entropy
02:27:53 <jix> dont look up that
02:27:57 <pgimeno> that's s/e/o/ and not s/e/o/g
02:28:13 * heatsink found it on wikipodia
02:28:18 <jix> look up bwt and move to front
02:28:29 <jix> ok
02:28:49 <pgimeno> I first knew it through bwt
02:28:56 * jix too
02:29:40 <jix> my own test is good for detecting some bits random some bits not-random but high entropy
02:34:08 <jix> some creative ideas for tests?
02:34:08 <heatsink> ooh, is nifty the burrows wheeler algorithm
02:35:30 <heatsink> no, just uncreative ideas.
02:35:59 <jix> heatsink: tell them..
02:36:32 <heatsink> autocorrelation test; frequency count of each byte
02:37:06 <jix> frequency count of each byte does the same thing as entropy...
02:37:13 <heatsink> oh
02:37:48 <jix> if the frequency count of each byte/file_size is different than 1/256 it's lower than 8
02:38:05 <jix> but it's easy to fool with (0..256)*256
02:38:21 <jix> that doesn't happen with mtf entropy
02:38:55 <heatsink> autocorrelation test has some advantages with detecting VLCs
02:39:14 <heatsink> or, generally, non-8-bit codes
02:40:01 <jix> all my tests besides entropy have a larger "window" than 8bit
02:41:47 <jix> Hot Bit Entropy implemented
02:42:00 <heatsink> What's that?
02:42:10 <jix> entropy of last byte xor curren byte
02:42:14 <jix> +t
02:42:20 <heatsink> ok
02:42:38 <jix> if some bits change less often than other bits this one detects it
02:43:39 * jix has another cool idea
02:43:51 <jix> should help against bit-shifting algorithms
02:44:07 <jix> i try to come up with a prng and than how to detect it
02:44:46 <heatsink> Do you have a way to detect hashing-based prngs?
02:44:57 <jix> hm
02:45:02 <jix> don't know them
02:45:08 <heatsink> I've heard that sometimes people use MD5 as a PRNG
02:45:38 <heatsink> repeatedly perform a hash on the same 20 bytes and take the low byte as the new number
02:45:38 <jix> hm
02:45:59 <jix> that's difficult to detect
02:47:10 <jix> because they use cryptographic secure algorithms...(not 100% secure because it's possible to generate two msgs with the same hash) but if you only know the hash you can't construct a msg without brute forcing
02:49:45 -!- int-e has joined.
02:49:55 -!- int-e has left (?).
02:50:01 <heatsink> MD5 is allowed to destroy information though
02:50:10 <jix> yes
02:50:24 <jix> for msgs longer than the hash it does
02:50:39 <heatsink> only for longer messages?
02:51:07 <jix> no but it looses only a few bits sometime with shorter/same length msgs
02:51:29 <jix> they have a good distribution of the data over all bits
02:51:35 <jix> that makes them a good checksum
02:51:44 <heatsink> ah
02:57:01 <jix> hmm my unnamed algorithm seems to be good for many kinds of simple prng's
02:57:35 <heatsink> have you tested it on rngs?
02:57:44 <heatsink> (as a control)
02:57:57 <jix> i'm using /dev/urandom as a control
02:58:24 <jix> because true random is too rare for testing it with 64kb...
02:58:43 <jix> gpg uses /dev/urandom so it has to be pretty good
03:00:29 <jix> sliding bit entropy has a max value somewhere around 6.74...
03:01:30 <jix> hmm no 6.75 is possible
03:02:22 <jix> 6.758 is the highest value i got
03:03:45 <jix> my randtester's binary is not random
03:05:23 <jix> ent is so much faster than my tool
03:06:18 <heatsink> I just made an md5 PRNG in python
03:09:38 <heatsink> do you want to test your tools on md5 hash output?
03:10:56 <jix> yes
03:12:37 <heatsink> #! /usr/bin/python
03:12:37 <heatsink> import sys;import md5;m = md5.new();seed = '\x000' * 19 + '\x014'
03:12:37 <heatsink> while 1:d = m.digest();sys.stdout.write(d);m.update(d)
03:12:47 <jix> ruby -r digest/md5 -e 'i="jix";10000.times{print i=Digest::MD5.digest(i)}'
03:13:27 <jix> the program needs to terminate because i pipe the date into the tester
03:13:37 <heatsink> ok
03:14:10 <jix> as good as urandom
03:14:13 <jix> using my tests
03:14:57 <jix> using ent's tests too
03:15:13 <jix> (chi square and monte carlo pi and serial correlation)
03:20:12 <heatsink> ok, well I'm going to bed.
03:21:04 -!- kipple has quit (Read error: 110 (Connection timed out)).
03:21:15 <heatsink> looks like you've got a quality prng.
03:21:28 <heatsink> night
03:21:30 <heatsink> quit
03:21:32 -!- heatsink has quit ("Leaving").
03:21:36 -!- J|x has joined.
03:22:10 -!- jix has quit (Nick collision from services.).
03:22:12 -!- J|x has changed nick to jix.
03:29:36 <jix> gn8
03:29:42 <jix> its 4:30am here
03:29:47 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
04:35:28 -!- graue has joined.
04:35:33 <graue> hello everyone
04:35:40 <graue> how have things been in the esoteric community lately?
04:43:54 <graue> pretty boring I guess, bye
04:43:55 -!- graue has quit ("ircII EPIC4-1.1.12 -- Are we there yet?").
05:12:09 -!- ramkrsna has joined.
05:35:07 -!- calamari has quit (Read error: 110 (Connection timed out)).
06:26:29 -!- et has joined.
06:47:23 -!- et has quit (Read error: 110 (Connection timed out)).
07:26:59 -!- ramkrsna has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:23:29 -!- kipple has joined.
10:42:44 -!- fizzie has quit ("Siirretaanpa sahkojohtoa, maalaavat muuten yli sen.").
12:23:46 -!- sp3tt has joined.
12:42:09 -!- kipple has quit (Read error: 110 (Connection timed out)).
13:19:01 -!- int-e has joined.
14:23:24 -!- jix has joined.
15:07:01 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
15:07:11 -!- jix has joined.
16:00:01 <puzzlet> what.. Homespring website is down?
16:00:58 <puzzlet> thank god there's the archive
16:17:36 -!- sp3tt has quit (Client Quit).
16:35:40 <GregorR> Oh Lord, thank you for the Earth, thank you for the rains that give us crops, thank you for the shelter that keeps us warm and dry, and thank you for www.archive.org, amen.
17:18:29 -!- int-e has quit ("Bye!").
17:23:42 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
17:56:06 -!- ramkrsna_ has joined.
18:02:06 -!- jix has joined.
18:12:15 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
18:12:26 -!- jix has joined.
18:14:42 -!- Keymaker has joined.
18:15:16 <Keymaker> 'h' 'i'
18:16:36 <jix> mmmoooiiinnn kkkeeeyyymmmaaakkkeeerrr
18:37:30 -!- int-e has joined.
18:39:51 <Keymaker> hello
18:40:11 <Keymaker> (sorry, didn't notice something happened here :)
18:41:25 <int-e> what why when?
18:41:28 <int-e> hehe
18:41:52 -!- liebestraume has changed nick to lament.
18:42:40 <int-e> I think that last e should've been an a ;)
18:46:35 -!- Kmkr has joined.
18:53:23 <GregorR> Graah, you closed your parens with a smily :P
18:53:39 <GregorR> (These parens are not closed :)
18:53:46 <GregorR> (These parens are closed :) )
18:57:38 -!- int-e has quit (Remote closed the connection).
18:58:17 <lament> ()()())))()(()9()())(()
18:58:46 -!- int-e has joined.
19:01:10 * GregorR 's head explodes.
19:01:45 <GregorR> :( There are no parens here :)
19:04:51 -!- Keymaker has quit (Read error: 110 (Connection timed out)).
19:12:13 -!- Kmkr has quit (Read error: 110 (Connection timed out)).
19:20:46 -!- {^Raven^} has quit (Read error: 60 (Operation timed out)).
19:23:09 -!- {^Raven^} has joined.
21:23:06 -!- ramkrsna_ has quit (Read error: 113 (No route to host)).
22:17:49 <lament> :( nor here ):
22:18:29 <jix> {^Raven^}: and here? :]
22:18:35 <jix> whoops?!
22:18:41 <jix> i didn't wrote {^Raven^} ...
22:46:22 <GregorR> Yeah, suuuuure, tab-happy jix ;)
22:46:47 <jix> but {^Raven^}: is a funny smily
22:47:07 <GregorR> Let's see ...
22:47:12 <jix> it's someone with no tooth on the right eating Raven
22:47:19 <jix> ^^
22:48:31 <GregorR> It's a guy wearing a silly hat with one eye and a broken noze, who's whispering while drooling into his beard, with one nipple and a sad animal at his feet.
22:48:42 <GregorR> s/noze/nose/
22:49:02 <jix> uhm ok
22:49:04 <jix> sure.
22:49:33 <GregorR> A very specific smiley :P
23:15:49 <pgimeno> reverse smileys are cool (-: (-; (-B d:
23:16:51 <GregorR> Upside-down smileys are cooler o^o
23:17:09 <jix> lol
23:17:21 <jix> invisible smileys rock:
23:17:31 <GregorR> WOAH man.
23:17:36 <GregorR> That rawk'd my world!
23:42:08 <GregorR> I started writing a MUD engine.
23:42:13 <GregorR> Not a good plan :P
23:42:25 <GregorR> One of those things that turns into an obsession really quickly.
23:42:49 <int-e> why would one do such a thing?
23:43:07 <GregorR> I have a few ideas that I think would be cool.
23:43:17 <GregorR> (I know, very stupid reason :) )
23:45:23 <int-e> oh yes, ideas are a dangerous thing
23:47:29 * int-e thinks happy thoughts.
23:50:42 <jix> nGHGHAhaghaghAHG
23:51:02 <jix> bad idea to join #math.. can't sleep now have to find a solution for the topic
23:52:15 <int-e> hmm
23:53:58 <int-e> p(1)=1, p(2)=2 (1,1; 2), p(3)=3 (1+1+1; 1+2; 3)?
23:58:19 <jix> yes
23:58:53 <jix> i've found an algorithm (recursive) for p(n)
←2005-08-14 2005-08-15 2005-08-16→ ↑2005 ↑all