Autor
|
Tema: Simulacion de Comunicacion. (Leído 4,173 veces)
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Voy a revisarlo con calma.
Solo me queda comentar que la forma en la que estas contando los cambios no contempla si un byte determinado fue modificado en mas de 1 bit. Es decir si por azar cambias mas de 2 bits en un solo byte, al final la forma en la que lo estas contando solo contabilizada un solo cambio, cuando realmente puede ser mas de 1.
Voy a cambiar esa parte y hacer que noise devuelva la cantidad de bits que modifico.
Saludos.
|
|
« Última modificación: 17 Noviembre 2018, 20:45 pm por AlbertoBSD »
|
En línea
|
|
|
|
CalgaryCorpus
|
Estoy de acuerdo que la cuenta se puede mejorar, lo indique también en el comentario que acompaña. Gracias!
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Si bien es cierto que el codigo que posteaste modifica el stream de datos exactamente "cuantos" veces bits por cada 100. Encontre un detalle. Incremente la precuencia a 10 veces por cada 100, y en ocasiones escribe el mismo bit varias veces, esto obvio por la función al azar. Con lo cual la solucion tambien falla, se podria solucionar llevando el registro de cuales bits ya fueron modificados y en caso de caer el mismo bit volver a generar un numero al azar. Volviendo al código de que la función Noise solo reciba de 8 bits en 8 bits. La aproximación sigue siendo buena en el largo plazo, para un stream de 10 millones de bytes el proceso solo modifica un numero paroximado de "Cuantos" % por cada 100. Hice esta prueba 1000 veces (10 millones de bytes) y dejo aqui los resultados para cuantos = 1, si bien es cierto que el resultado indica que la mayoría de las veces escribe un poco mas del 1% est esto ejemplo 1.0009% etc..., el problema no radica en error del código, sino en que al realizar modulo de un numero aleatorio entero, los números arrojados por modulo van a favorecer a los números pequeños mas pequeños, por lo cual son mas veces en las que cae un total de modificaciones mayores al 1% que las que veces que es menor al 1% 801872/80000000: 0.010023 800686/80000000: 0.010009 801186/80000000: 0.010015 801434/80000000: 0.010018 798510/80000000: 0.009981 802066/80000000: 0.010026 800646/80000000: 0.010008 800404/80000000: 0.010005 800509/80000000: 0.010006 799722/80000000: 0.009997 800401/80000000: 0.010005 802419/80000000: 0.010030 801342/80000000: 0.010017 799240/80000000: 0.009990 800074/80000000: 0.010001 801603/80000000: 0.010020 801204/80000000: 0.010015 800968/80000000: 0.010012 798772/80000000: 0.009985 800586/80000000: 0.010007 801397/80000000: 0.010017 801388/80000000: 0.010017 801498/80000000: 0.010019 799636/80000000: 0.009995 801361/80000000: 0.010017 799974/80000000: 0.010000 802682/80000000: 0.010034 801124/80000000: 0.010014 800626/80000000: 0.010008 801999/80000000: 0.010025 800699/80000000: 0.010009 798801/80000000: 0.009985 802041/80000000: 0.010026 800655/80000000: 0.010008 800516/80000000: 0.010006 800127/80000000: 0.010002 799840/80000000: 0.009998 800798/80000000: 0.010010 802404/80000000: 0.010030 800962/80000000: 0.010012 799079/80000000: 0.009988 800190/80000000: 0.010002 802071/80000000: 0.010026 801185/80000000: 0.010015 801056/80000000: 0.010013 798745/80000000: 0.009984 800413/80000000: 0.010005 801697/80000000: 0.010021 800700/80000000: 0.010009 801438/80000000: 0.010018 799661/80000000: 0.009996 800943/80000000: 0.010012 801018/80000000: 0.010013 802110/80000000: 0.010026 801044/80000000: 0.010013 801069/80000000: 0.010013 801805/80000000: 0.010023 800529/80000000: 0.010007 799581/80000000: 0.009995 801568/80000000: 0.010020 800177/80000000: 0.010002 800500/80000000: 0.010006 800400/80000000: 0.010005 799989/80000000: 0.010000 801018/80000000: 0.010013 801732/80000000: 0.010022 800914/80000000: 0.010011 799528/80000000: 0.009994 800926/80000000: 0.010012 801257/80000000: 0.010016 801388/80000000: 0.010017 800303/80000000: 0.010004 799101/80000000: 0.009989 800431/80000000: 0.010005 802019/80000000: 0.010025 800509/80000000: 0.010006 801267/80000000: 0.010016 799827/80000000: 0.009998 800949/80000000: 0.010012 801384/80000000: 0.010017 801989/80000000: 0.010025 801143/80000000: 0.010014 800858/80000000: 0.010011 801373/80000000: 0.010017 800915/80000000: 0.010011 799775/80000000: 0.009997 801985/80000000: 0.010025 800055/80000000: 0.010001 799877/80000000: 0.009998 799569/80000000: 0.009995 800713/80000000: 0.010009 801717/80000000: 0.010021 801376/80000000: 0.010017 801070/80000000: 0.010013 798755/80000000: 0.009984 801968/80000000: 0.010025 801261/80000000: 0.010016 801238/80000000: 0.010015 799939/80000000: 0.009999 799197/80000000: 0.009990 800861/80000000: 0.010011 801462/80000000: 0.010018 800967/80000000: 0.010012 801090/80000000: 0.010014 800326/80000000: 0.010004 800272/80000000: 0.010003 801724/80000000: 0.010022 801653/80000000: 0.010021 801532/80000000: 0.010019 800261/80000000: 0.010003 801963/80000000: 0.010025 799778/80000000: 0.009997 800801/80000000: 0.010010 801649/80000000: 0.010021 800511/80000000: 0.010006 799377/80000000: 0.009992 799875/80000000: 0.009998 800583/80000000: 0.010007 801719/80000000: 0.010021 801188/80000000: 0.010015 800559/80000000: 0.010007 799279/80000000: 0.009991 801975/80000000: 0.010025 801776/80000000: 0.010022 800353/80000000: 0.010004 800209/80000000: 0.010003 798950/80000000: 0.009987 801293/80000000: 0.010016 801474/80000000: 0.010018 800916/80000000: 0.010011 801147/80000000: 0.010014 800287/80000000: 0.010004 800628/80000000: 0.010008 801225/80000000: 0.010015 802154/80000000: 0.010027 801185/80000000: 0.010015 800306/80000000: 0.010004 801678/80000000: 0.010021 799658/80000000: 0.009996 801259/80000000: 0.010016 801564/80000000: 0.010020 799898/80000000: 0.009999 799866/80000000: 0.009998 799983/80000000: 0.010000 800596/80000000: 0.010007 802369/80000000: 0.010030 800423/80000000: 0.010005 800433/80000000: 0.010005 799412/80000000: 0.009993 801660/80000000: 0.010021 801684/80000000: 0.010021 800790/80000000: 0.010010 799563/80000000: 0.009995 799565/80000000: 0.009995 801129/80000000: 0.010014 801293/80000000: 0.010016 801535/80000000: 0.010019 800423/80000000: 0.010005 801201/80000000: 0.010015 800447/80000000: 0.010006 801478/80000000: 0.010018 802006/80000000: 0.010025 801066/80000000: 0.010013 800642/80000000: 0.010008 801202/80000000: 0.010015 799373/80000000: 0.009992 801219/80000000: 0.010015 801008/80000000: 0.010013 800482/80000000: 0.010006 800229/80000000: 0.010003 800057/80000000: 0.010001 800341/80000000: 0.010004 802365/80000000: 0.010030 801192/80000000: 0.010015 799544/80000000: 0.009994 799810/80000000: 0.009998 802012/80000000: 0.010025 800900/80000000: 0.010011 800904/80000000: 0.010011 798985/80000000: 0.009987 800312/80000000: 0.010004 801321/80000000: 0.010017 801691/80000000: 0.010021 801527/80000000: 0.010019 799359/80000000: 0.009992 801560/80000000: 0.010020 799970/80000000: 0.010000 802288/80000000: 0.010029 801383/80000000: 0.010017 800853/80000000: 0.010011 801587/80000000: 0.010020 800985/80000000: 0.010012 798920/80000000: 0.009987 802182/80000000: 0.010027 800557/80000000: 0.010007 800181/80000000: 0.010002 800637/80000000: 0.010008 799569/80000000: 0.009995 800515/80000000: 0.010006 802352/80000000: 0.010029 801326/80000000: 0.010017 798818/80000000: 0.009985 800459/80000000: 0.010006 801850/80000000: 0.010023 801540/80000000: 0.010019 800665/80000000: 0.010008 798514/80000000: 0.009981 800782/80000000: 0.010010 801569/80000000: 0.010020 800724/80000000: 0.010009 801799/80000000: 0.010022 799559/80000000: 0.009994 800986/80000000: 0.010012 800538/80000000: 0.010007 802341/80000000: 0.010029 800994/80000000: 0.010012 801334/80000000: 0.010017 801662/80000000: 0.010021 800750/80000000: 0.010009 799223/80000000: 0.009990 801386/80000000: 0.010017 800510/80000000: 0.010006 800560/80000000: 0.010007 800159/80000000: 0.010002 800365/80000000: 0.010005 800911/80000000: 0.010011 801838/80000000: 0.010023 800889/80000000: 0.010011 799027/80000000: 0.009988 800932/80000000: 0.010012 801580/80000000: 0.010020 801310/80000000: 0.010016 800571/80000000: 0.010007 798814/80000000: 0.009985 800345/80000000: 0.010004 802328/80000000: 0.010029 800357/80000000: 0.010004 801443/80000000: 0.010018 799523/80000000: 0.009994 800929/80000000: 0.010012 801506/80000000: 0.010019 801789/80000000: 0.010022 801058/80000000: 0.010013 801471/80000000: 0.010018 801133/80000000: 0.010014 800858/80000000: 0.010011 799305/80000000: 0.009991 802416/80000000: 0.010030 799759/80000000: 0.009997 800163/80000000: 0.010002 800000/80000000: 0.010000 800462/80000000: 0.010006 801277/80000000: 0.010016 801614/80000000: 0.010020 801123/80000000: 0.010014 799016/80000000: 0.009988 801480/80000000: 0.010019 801357/80000000: 0.010017 801253/80000000: 0.010016 800346/80000000: 0.010004 798859/80000000: 0.009986 800568/80000000: 0.010007 802114/80000000: 0.010026 800586/80000000: 0.010007 801286/80000000: 0.010016 799835/80000000: 0.009998 800572/80000000: 0.010007 801601/80000000: 0.010020 801770/80000000: 0.010022 801676/80000000: 0.010021 800085/80000000: 0.010001 802200/80000000: 0.010028 799997/80000000: 0.010000 800324/80000000: 0.010004 801692/80000000: 0.010021 800684/80000000: 0.010009 799309/80000000: 0.009991 799564/80000000: 0.009995 800724/80000000: 0.010009 801609/80000000: 0.010020 801366/80000000: 0.010017 801189/80000000: 0.010015 798736/80000000: 0.009984 802003/80000000: 0.010025 801420/80000000: 0.010018 800751/80000000: 0.010009 799949/80000000: 0.009999 799247/80000000: 0.009991 801261/80000000: 0.010016 801276/80000000: 0.010016 801043/80000000: 0.010013 801074/80000000: 0.010013 800697/80000000: 0.010009 800087/80000000: 0.010001 801486/80000000: 0.010019 801871/80000000: 0.010023 801259/80000000: 0.010016 800168/80000000: 0.010002 802025/80000000: 0.010025 799810/80000000: 0.009998 800803/80000000: 0.010010 801883/80000000: 0.010024 800055/80000000: 0.010001 799534/80000000: 0.009994 799866/80000000: 0.009998 800584/80000000: 0.010007 802571/80000000: 0.010032 800743/80000000: 0.010009 800273/80000000: 0.010003 799467/80000000: 0.009993 801448/80000000: 0.010018 801783/80000000: 0.010022 800705/80000000: 0.010009 799860/80000000: 0.009998 799285/80000000: 0.009991 801289/80000000: 0.010016 801230/80000000: 0.010015 801498/80000000: 0.010019 800231/80000000: 0.010003 801094/80000000: 0.010014 800415/80000000: 0.010005 801678/80000000: 0.010021 801608/80000000: 0.010020 801419/80000000: 0.010018 800738/80000000: 0.010009 801201/80000000: 0.010015 798888/80000000: 0.009986 801914/80000000: 0.010024 801154/80000000: 0.010014 800327/80000000: 0.010004 799901/80000000: 0.009999 799998/80000000: 0.010000 800706/80000000: 0.010009 801969/80000000: 0.010025 801249/80000000: 0.010016 799751/80000000: 0.009997 799519/80000000: 0.009994 802092/80000000: 0.010026 801120/80000000: 0.010014 800908/80000000: 0.010011 799306/80000000: 0.009991 799922/80000000: 0.009999 801176/80000000: 0.010015 801279/80000000: 0.010016 801711/80000000: 0.010021 800074/80000000: 0.010001 801219/80000000: 0.010015 800126/80000000: 0.010002 802104/80000000: 0.010026 801699/80000000: 0.010021 800667/80000000: 0.010008 801261/80000000: 0.010016 801421/80000000: 0.010018 798713/80000000: 0.009984 802275/80000000: 0.010028 800092/80000000: 0.010001 800555/80000000: 0.010007 800684/80000000: 0.010009 799421/80000000: 0.009993 800515/80000000: 0.010006 802395/80000000: 0.010030 801340/80000000: 0.010017 798905/80000000: 0.009986 800578/80000000: 0.010007 801514/80000000: 0.010019 801245/80000000: 0.010016 801044/80000000: 0.010013 798686/80000000: 0.009984 800489/80000000: 0.010006 801542/80000000: 0.010019 801056/80000000: 0.010013 801703/80000000: 0.010021 799578/80000000: 0.009995 801133/80000000: 0.010014 800223/80000000: 0.010003 802723/80000000: 0.010034 801118/80000000: 0.010014 800662/80000000: 0.010008 802043/80000000: 0.010026 800672/80000000: 0.010008 798762/80000000: 0.009985 801842/80000000: 0.010023 800485/80000000: 0.010006 800885/80000000: 0.010011 799958/80000000: 0.009999 799953/80000000: 0.009999 801096/80000000: 0.010014 802134/80000000: 0.010027 800842/80000000: 0.010011 799052/80000000: 0.009988 800724/80000000: 0.010009 801672/80000000: 0.010021 801302/80000000: 0.010016 800895/80000000: 0.010011 798439/80000000: 0.009980 800732/80000000: 0.010009 801654/80000000: 0.010021 800631/80000000: 0.010008 801500/80000000: 0.010019 799711/80000000: 0.009996 800825/80000000: 0.010010 801305/80000000: 0.010016 802209/80000000: 0.010028 800840/80000000: 0.010011 801045/80000000: 0.010013 801584/80000000: 0.010020 800859/80000000: 0.010011 799325/80000000: 0.009992 801991/80000000: 0.010025 799981/80000000: 0.010000 800376/80000000: 0.010005 800480/80000000: 0.010006 799725/80000000: 0.009997 801225/80000000: 0.010015 801556/80000000: 0.010019 800999/80000000: 0.010012 799500/80000000: 0.009994 801324/80000000: 0.010017 800930/80000000: 0.010012 801621/80000000: 0.010020 800389/80000000: 0.010005 798938/80000000: 0.009987 800626/80000000: 0.010008 801695/80000000: 0.010021 800547/80000000: 0.010007 801438/80000000: 0.010018 799812/80000000: 0.009998 800821/80000000: 0.010010 801456/80000000: 0.010018 801967/80000000: 0.010025 801287/80000000: 0.010016 800489/80000000: 0.010006 801724/80000000: 0.010022 800681/80000000: 0.010009 800066/80000000: 0.010001 801732/80000000: 0.010022 800470/80000000: 0.010006 799409/80000000: 0.009993 799832/80000000: 0.009998 800255/80000000: 0.010003 801864/80000000: 0.010023 801392/80000000: 0.010017 800937/80000000: 0.010012 798972/80000000: 0.009987 801878/80000000: 0.010023 801560/80000000: 0.010020 800877/80000000: 0.010011 799887/80000000: 0.009999 799456/80000000: 0.009993 800828/80000000: 0.010010 801512/80000000: 0.010019 800956/80000000: 0.010012 801174/80000000: 0.010015 800168/80000000: 0.010002 800360/80000000: 0.010005 801599/80000000: 0.010020 801635/80000000: 0.010020 801614/80000000: 0.010020 800033/80000000: 0.010000 802094/80000000: 0.010026 799929/80000000: 0.009999 800999/80000000: 0.010012 801185/80000000: 0.010015 800654/80000000: 0.010008 799215/80000000: 0.009990 799980/80000000: 0.010000 800497/80000000: 0.010006 801963/80000000: 0.010025 801104/80000000: 0.010014 800531/80000000: 0.010007 799453/80000000: 0.009993 801923/80000000: 0.010024 801422/80000000: 0.010018 800889/80000000: 0.010011 799768/80000000: 0.009997 799213/80000000: 0.009990 801098/80000000: 0.010014 801593/80000000: 0.010020 801055/80000000: 0.010013 800929/80000000: 0.010012 800402/80000000: 0.010005 800365/80000000: 0.010005 801474/80000000: 0.010018 802219/80000000: 0.010028 801225/80000000: 0.010015 800505/80000000: 0.010006 801376/80000000: 0.010017 799380/80000000: 0.009992 801442/80000000: 0.010018 801575/80000000: 0.010020 799732/80000000: 0.009997 799997/80000000: 0.010000 799999/80000000: 0.010000 800895/80000000: 0.010011 802111/80000000: 0.010026 800574/80000000: 0.010007 800409/80000000: 0.010005 799388/80000000: 0.009992 801527/80000000: 0.010019 802017/80000000: 0.010025 800628/80000000: 0.010008 799234/80000000: 0.009990 799860/80000000: 0.009998 800969/80000000: 0.010012 801623/80000000: 0.010020 801381/80000000: 0.010017 800189/80000000: 0.010002 801256/80000000: 0.010016 800489/80000000: 0.010006 801720/80000000: 0.010021 801742/80000000: 0.010022 800952/80000000: 0.010012 801089/80000000: 0.010014 801340/80000000: 0.010017 798761/80000000: 0.009985 801697/80000000: 0.010021 800677/80000000: 0.010008 800501/80000000: 0.010006 800415/80000000: 0.010005 799513/80000000: 0.009994 800661/80000000: 0.010008 802229/80000000: 0.010028 801670/80000000: 0.010021 799177/80000000: 0.009990 799967/80000000: 0.010000 801666/80000000: 0.010021 801346/80000000: 0.010017 800564/80000000: 0.010007 799146/80000000: 0.009989 800265/80000000: 0.010003 801607/80000000: 0.010020 801497/80000000: 0.010019 801467/80000000: 0.010018 799610/80000000: 0.009995 801389/80000000: 0.010017 799820/80000000: 0.009998 802501/80000000: 0.010031 801419/80000000: 0.010018 800811/80000000: 0.010010 801711/80000000: 0.010021 800624/80000000: 0.010008 798969/80000000: 0.009987 802280/80000000: 0.010028 800559/80000000: 0.010007 800158/80000000: 0.010002 800236/80000000: 0.010003 799908/80000000: 0.009999 800514/80000000: 0.010006 802423/80000000: 0.010030 801375/80000000: 0.010017 799075/80000000: 0.009988 800169/80000000: 0.010002 801978/80000000: 0.010025 801306/80000000: 0.010016 800882/80000000: 0.010011 798509/80000000: 0.009981 800622/80000000: 0.010008 801680/80000000: 0.010021 800697/80000000: 0.010009 801544/80000000: 0.010019 799626/80000000: 0.009995 801103/80000000: 0.010014 800522/80000000: 0.010007 802366/80000000: 0.010030 801008/80000000: 0.010013 801186/80000000: 0.010015 801687/80000000: 0.010021 800613/80000000: 0.010008 799604/80000000: 0.009995 801408/80000000: 0.010018 800547/80000000: 0.010007 800521/80000000: 0.010007 800155/80000000: 0.010002 800076/80000000: 0.010001 801057/80000000: 0.010013 801776/80000000: 0.010022 800650/80000000: 0.010008 799479/80000000: 0.009993 800873/80000000: 0.010011 801315/80000000: 0.010016 801513/80000000: 0.010019 800447/80000000: 0.010006 798764/80000000: 0.009985 800551/80000000: 0.010007 802180/80000000: 0.010027 800317/80000000: 0.010004 801378/80000000: 0.010017 799863/80000000: 0.009998 800711/80000000: 0.010009 801592/80000000: 0.010020 801796/80000000: 0.010022 801279/80000000: 0.010016 801120/80000000: 0.010014 801252/80000000: 0.010016 800839/80000000: 0.010010 799537/80000000: 0.009994 802332/80000000: 0.010029 799884/80000000: 0.009999 799773/80000000: 0.009997 799832/80000000: 0.009998 800767/80000000: 0.010010 801338/80000000: 0.010017 801518/80000000: 0.010019 801105/80000000: 0.010014 798797/80000000: 0.009985 801935/80000000: 0.010024 801360/80000000: 0.010017 801382/80000000: 0.010017 799920/80000000: 0.009999 799015/80000000: 0.009988 800685/80000000: 0.010009 801781/80000000: 0.010022 800804/80000000: 0.010010 801022/80000000: 0.010013 800313/80000000: 0.010004 800505/80000000: 0.010006 801702/80000000: 0.010021 801546/80000000: 0.010019 801665/80000000: 0.010021 800271/80000000: 0.010003 801781/80000000: 0.010022 800005/80000000: 0.010000 800381/80000000: 0.010005 802116/80000000: 0.010026 800541/80000000: 0.010007 799047/80000000: 0.009988 799790/80000000: 0.009997 800722/80000000: 0.010009 801454/80000000: 0.010018 801441/80000000: 0.010018 801025/80000000: 0.010013 798701/80000000: 0.009984 802108/80000000: 0.010026 801466/80000000: 0.010018 800775/80000000: 0.010010 799784/80000000: 0.009997 799250/80000000: 0.009991 801135/80000000: 0.010014 801574/80000000: 0.010020 800853/80000000: 0.010011 801397/80000000: 0.010017 800192/80000000: 0.010002 800708/80000000: 0.010009 801128/80000000: 0.010014 802149/80000000: 0.010027 801001/80000000: 0.010013 800355/80000000: 0.010004 801810/80000000: 0.010023 799598/80000000: 0.009995 801250/80000000: 0.010016 801729/80000000: 0.010022 799878/80000000: 0.009998 799688/80000000: 0.009996 800215/80000000: 0.010003 800344/80000000: 0.010004 802555/80000000: 0.010032 800765/80000000: 0.010010 800086/80000000: 0.010001 799461/80000000: 0.009993 801398/80000000: 0.010017 802046/80000000: 0.010026 800606/80000000: 0.010008 799708/80000000: 0.009996 799463/80000000: 0.009993 801095/80000000: 0.010014 801379/80000000: 0.010017 801440/80000000: 0.010018 800369/80000000: 0.010005 801099/80000000: 0.010014 800528/80000000: 0.010007 801653/80000000: 0.010021 801678/80000000: 0.010021 801284/80000000: 0.010016 800524/80000000: 0.010007 801259/80000000: 0.010016 799173/80000000: 0.009990 801551/80000000: 0.010019 801049/80000000: 0.010013 800586/80000000: 0.010007 800287/80000000: 0.010004 799769/80000000: 0.009997 800471/80000000: 0.010006 802116/80000000: 0.010026 801325/80000000: 0.010017 799604/80000000: 0.009995 799612/80000000: 0.009995 802182/80000000: 0.010027 800965/80000000: 0.010012 800678/80000000: 0.010008 799231/80000000: 0.009990 800200/80000000: 0.010002 801194/80000000: 0.010015 801590/80000000: 0.010020 801391/80000000: 0.010017 799948/80000000: 0.009999 801334/80000000: 0.010017 800097/80000000: 0.010001 802098/80000000: 0.010026 801702/80000000: 0.010021 800796/80000000: 0.010010 801349/80000000: 0.010017 801020/80000000: 0.010013 798904/80000000: 0.009986 802166/80000000: 0.010027 800401/80000000: 0.010005 800224/80000000: 0.010003 800836/80000000: 0.010010 799507/80000000: 0.009994 800467/80000000: 0.010006 802414/80000000: 0.010030 801431/80000000: 0.010018 798823/80000000: 0.009985 800454/80000000: 0.010006 801748/80000000: 0.010022 801390/80000000: 0.010017 800822/80000000: 0.010010 798526/80000000: 0.009982 800586/80000000: 0.010007 801563/80000000: 0.010020 800989/80000000: 0.010012 801723/80000000: 0.010022 799803/80000000: 0.009998 800863/80000000: 0.010011 800333/80000000: 0.010004 802673/80000000: 0.010033 800649/80000000: 0.010008 801286/80000000: 0.010016 801865/80000000: 0.010023 800556/80000000: 0.010007 799030/80000000: 0.009988 801778/80000000: 0.010022 800481/80000000: 0.010006 800563/80000000: 0.010007 800313/80000000: 0.010004 799991/80000000: 0.010000 800968/80000000: 0.010012 802057/80000000: 0.010026 800803/80000000: 0.010010 799105/80000000: 0.009989 800761/80000000: 0.010010 801690/80000000: 0.010021 801102/80000000: 0.010014 800985/80000000: 0.010012 798420/80000000: 0.009980 800651/80000000: 0.010008 802180/80000000: 0.010027 800295/80000000: 0.010004 801465/80000000: 0.010018 799548/80000000: 0.009994 800912/80000000: 0.010011 801453/80000000: 0.010018 801809/80000000: 0.010023 801203/80000000: 0.010015 801330/80000000: 0.010017 801250/80000000: 0.010016 800883/80000000: 0.010011 799242/80000000: 0.009991 802246/80000000: 0.010028 799817/80000000: 0.009998 800367/80000000: 0.010005 800084/80000000: 0.010001 800262/80000000: 0.010003 801462/80000000: 0.010018 801152/80000000: 0.010014 801251/80000000: 0.010016 799181/80000000: 0.009990 801387/80000000: 0.010017 801105/80000000: 0.010014 801494/80000000: 0.010019 800340/80000000: 0.010004 798966/80000000: 0.009987 800717/80000000: 0.010009 801788/80000000: 0.010022 800693/80000000: 0.010009 801039/80000000: 0.010013 800107/80000000: 0.010001 800617/80000000: 0.010008 801399/80000000: 0.010017 801958/80000000: 0.010024 801384/80000000: 0.010017 800412/80000000: 0.010005 801919/80000000: 0.010024 800354/80000000: 0.010004 799993/80000000: 0.010000 801957/80000000: 0.010024 800589/80000000: 0.010007 799291/80000000: 0.009991 799686/80000000: 0.009996 800381/80000000: 0.010005 801817/80000000: 0.010023 801573/80000000: 0.010020 800944/80000000: 0.010012 798942/80000000: 0.009987 801709/80000000: 0.010021 801554/80000000: 0.010019 800896/80000000: 0.010011 800020/80000000: 0.010000 799312/80000000: 0.009991 801023/80000000: 0.010013 801175/80000000: 0.010015 801235/80000000: 0.010015 801026/80000000: 0.010013 800629/80000000: 0.010008 800351/80000000: 0.010004 801346/80000000: 0.010017 801594/80000000: 0.010020 801543/80000000: 0.010019 799958/80000000: 0.009999 802109/80000000: 0.010026 800036/80000000: 0.010000 800613/80000000: 0.010008 801745/80000000: 0.010022 800181/80000000: 0.010002 799540/80000000: 0.009994 799818/80000000: 0.009998 800411/80000000: 0.010005 802614/80000000: 0.010033 800895/80000000: 0.010011 800343/80000000: 0.010004 799347/80000000: 0.009992 801599/80000000: 0.010020 801692/80000000: 0.010021 800953/80000000: 0.010012 799749/80000000: 0.009997 799022/80000000: 0.009988 801419/80000000: 0.010018 801489/80000000: 0.010019 801306/80000000: 0.010016 800447/80000000: 0.010006 800656/80000000: 0.010008 800372/80000000: 0.010005 801675/80000000: 0.010021 801952/80000000: 0.010024 801222/80000000: 0.010015 800789/80000000: 0.010010 801251/80000000: 0.010016 799087/80000000: 0.009989 801531/80000000: 0.010019 801453/80000000: 0.010018 800027/80000000: 0.010000 800143/80000000: 0.010002 799882/80000000: 0.009999 800651/80000000: 0.010008 802008/80000000: 0.010025 800978/80000000: 0.010012 800143/80000000: 0.010002 799389/80000000: 0.009992 801792/80000000: 0.010022 801672/80000000: 0.010021 800863/80000000: 0.010011 799350/80000000: 0.009992 799811/80000000: 0.009998 801061/80000000: 0.010013 801439/80000000: 0.010018 801506/80000000: 0.010019 800055/80000000: 0.010001 801321/80000000: 0.010017 800106/80000000: 0.010001 802064/80000000: 0.010026 801764/80000000: 0.010022 800662/80000000: 0.010008 801260/80000000: 0.010016 801389/80000000: 0.010017 798589/80000000: 0.009982 802118/80000000: 0.010026 800484/80000000: 0.010006 800419/80000000: 0.010005 800574/80000000: 0.010007 799727/80000000: 0.009997 800393/80000000: 0.010005 802369/80000000: 0.010030 801305/80000000: 0.010016 799237/80000000: 0.009990 800096/80000000: 0.010001 801742/80000000: 0.010022 801002/80000000: 0.010013 801072/80000000: 0.010013 798750/80000000: 0.009984 800485/80000000: 0.010006 801502/80000000: 0.010019 801336/80000000: 0.010017 801636/80000000: 0.010020 799640/80000000: 0.009995 801200/80000000: 0.010015 799983/80000000: 0.010000 802703/80000000: 0.010034 801153/80000000: 0.010014 800650/80000000: 0.010008 802108/80000000: 0.010026 800634/80000000: 0.010008 798799/80000000: 0.009985 801939/80000000: 0.010024 800500/80000000: 0.010006 800794/80000000: 0.010010 799961/80000000: 0.010000 799847/80000000: 0.009998 800929/80000000: 0.010012 802404/80000000: 0.010030 800871/80000000: 0.010011 799148/80000000: 0.009989 800248/80000000: 0.010003 802077/80000000: 0.010026 801130/80000000: 0.010014 800988/80000000: 0.010012 798719/80000000: 0.009984 800434/80000000: 0.010005 801573/80000000: 0.010020 800775/80000000: 0.010010 801478/80000000: 0.010018 799815/80000000: 0.009998 800746/80000000: 0.010009 801183/80000000: 0.010015 802013/80000000: 0.010025 801092/80000000: 0.010014 801106/80000000: 0.010014 801783/80000000: 0.010022 800560/80000000: 0.010007 799503/80000000: 0.009994 801621/80000000: 0.010020 800130/80000000: 0.010002 800325/80000000: 0.010004 800542/80000000: 0.010007 799935/80000000: 0.009999 801124/80000000: 0.010014 801721/80000000: 0.010022 800891/80000000: 0.010011 799461/80000000: 0.009993 800958/80000000: 0.010012 801274/80000000: 0.010016 801534/80000000: 0.010019 800224/80000000: 0.010003 799078/80000000: 0.009988 800554/80000000: 0.010007 801876/80000000: 0.010023 800448/80000000: 0.010006 801355/80000000: 0.010017 799774/80000000: 0.009997 801020/80000000: 0.010013 801257/80000000: 0.010016 802070/80000000: 0.010026 801247/80000000: 0.010016 800799/80000000: 0.010010 801301/80000000: 0.010016 800863/80000000: 0.010011 799853/80000000: 0.009998 801955/80000000: 0.010024 800270/80000000: 0.010003 799648/80000000: 0.009996 799635/80000000: 0.009995 800617/80000000: 0.010008 801728/80000000: 0.010022 801345/80000000: 0.010017 801111/80000000: 0.010014 798709/80000000: 0.009984 802121/80000000: 0.010027 801177/80000000: 0.010015 801198/80000000: 0.010015 799885/80000000: 0.009999 799417/80000000: 0.009993 800798/80000000: 0.010010 801662/80000000: 0.010021 800809/80000000: 0.010010 801094/80000000: 0.010014 800333/80000000: 0.010004 800186/80000000: 0.010002 801745/80000000: 0.010022 801630/80000000: 0.010020 801546/80000000: 0.010019 800203/80000000: 0.010003 801982/80000000: 0.010025 799751/80000000: 0.009997 800857/80000000: 0.010011 801680/80000000: 0.010021 800389/80000000: 0.010005 799540/80000000: 0.009994 799855/80000000: 0.009998 800417/80000000: 0.010005 801856/80000000: 0.010023 801223/80000000: 0.010015 800587/80000000: 0.010007 799179/80000000: 0.009990 801964/80000000: 0.010025 801735/80000000: 0.010022 800498/80000000: 0.010006 800080/80000000: 0.010001 799009/80000000: 0.009988 801161/80000000: 0.010015 801662/80000000: 0.010021 801002/80000000: 0.010013 800940/80000000: 0.010012 800227/80000000: 0.010003 800631/80000000: 0.010008 801274/80000000: 0.010016 802149/80000000: 0.010027 801317/80000000: 0.010016 800254/80000000: 0.010003 801469/80000000: 0.010018 799928/80000000: 0.009999 801137/80000000: 0.010014 801662/80000000: 0.010021
Saludos
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Lo unico que pruebas, al menos con el programa de test que pusiste previamente, es que la funcion rand() tiene un comportamiento como el que esperas, o sea, que 1 de cada 100 elementos sea elegido, pero esto no implica que 1 de cada 100 elementos tu eligiras de los primeros 100 bits. Si le dieras a la funcion rand() los 100 primeros elementos, esta elegiria solo 1 de alli, pero tu no haces esto, le dices a la funcion rand() que eliga uno por uno, cada bit, con probabilidad 1/100. Con ello, tu programa podria elegir varios bits en el camino, y es esto efectivamente lo que ocurre. Varias veces rand() elige alguno de los bits. Aunque rand() este bien, eso no implica que cualquier uso de rand() hara que los resultados esten correctos. No importa cuantas veces lo ejecutes. El no generar elecciones ya hechas se puede resolver, por ejemplo, manteniendo lo disponible. En vez de guardar lo elegido y comparar si ya ha sido elegido antes., por ejemplo asi: int noise(char * data_stream, int len_data, unsigned char cuantos, unsigned char valor) { int index; int bit; int cantidad_bits = len_data * 8; int disponible[100]; for (int offset = 0; offset < cantidad_bits; offset += 100) { for (int i = 0; i < 100; i++) disponible[i] = i; for (int bits_modificados = 0; bits_modificados < cuantos; bits_modificados++) { int r = rand() % (100 - bits_modificados ); int bit_offset = disponible[r] + offset; disponible[r] = disponible[99 - bits_modificados]; if (bit_offset >= cantidad_bits) { continue; } index = bit_offset / 8; bit = bit_offset % 8; if (valor) { data_stream[index] |= 1 << bit; } else { data_stream[index] &= ~(1 << bit); } } } }
|
|
« Última modificación: 18 Noviembre 2018, 00:35 am por CalgaryCorpus »
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Si tienes razón, tu código funciona. La aproximación por probabilidad que implemente a un byte es la mas sencilla de entender, claro ineficiente por que prueba bit por bit si debe de ser o no modificado, la desviación estandar es muy baja y la media siempre esta sobre el % indicado por "Cuantos" En fin, estoy de acuerdo que la versión por probabilidad NO hace exactamente lo que pide el programa, sin embargo es muy acercado a lo que se pide. He realizado un nuevo código que funciona de byte en byte y NO UTILIZA PROBABILIDAD,Funciona Byte a Byte por que en algún punto el modulo de ruido se debe de acoblar a un modulo "Canal" cosa que no voy a discutir aqui. Esta en forma de Clase por que necesitamos tener control de variables internas y llevar registro de cuales bits ya modificamos. Dejo el codigo por si a alguien le sirve, el algoritmo de ordenamiento se puede mejorar, para dejarlo simple utilice el ordenamiento burbuja. Cámbienlo por el que les guste. El programa utiliza objeto de clase Noise y genera una lista previa de los bits que va a modificar, y solo modifica dichos bits cuando le mandan un byte que contenga el indice de bit mencionado. Este programa no sabe a priori cuantos bytes le van a enviar, por lo que el ciclo de "cuantos" por cada 100 solo se cumple cuando el numero de bits que se le a enviado es múltiplo de 100. #include<string.h> #include<stdio.h> #include<time.h> #include<stdlib.h> #define LEN 25 class Noise { private: unsigned char cuantos; unsigned char valor; int index_nibble; int lista_actual; int *lista; int next; void generar_lista(); void ordenar_lista(); public: unsigned int recibidos; unsigned int modificados; Noise(unsigned char _cuantos, unsigned char _valor); ~Noise(); char modificar(char b); }; Noise::Noise(unsigned char _cuantos, unsigned char _valor) { cuantos = _cuantos; valor = _valor; index_nibble = 0; recibidos = 0; modificados = 0; lista = new int[cuantos]; srand(time(NULL)); generar_lista(); } Noise::~Noise() { delete lista; } void Noise::generar_lista() { lista_actual = 0; int no_duplicados[100] = {0}; int i = 0,r; while(i < cuantos) { do { r = rand() % 100; }while(no_duplicados[r] == 1); no_duplicados[r] = 1; //printf("Numero random %i\n",r); lista[i] = r; i++; } ordenar_lista(); next = lista[lista_actual]; } void Noise::ordenar_lista() { int i,j,aux; i = 1; while(i<cuantos) { j = 0; while(j<(cuantos-1)) { if(lista[j] > lista[j+1]) { aux = lista[j]; lista[j] = lista[j+1]; lista[j+1] = aux; } j++; } i++; } /* Solo para imprimir las siguientes lineas se pueden omitir */ /* printf("Lista Ordenada: "); i = 0; while(i< cuantos) { printf("%i\t",lista[i++]); } printf("\n"); */ } char Noise::modificar(char b) { //Se divide el byte recibido en nibbles para trabajar correctamente con divisores de 100, ya que 8 no es divisible entre 100 int i; int entrar = 1; int bit_offset; char nibble[2]; recibidos+=8; /* Lo siguiente es hardware dependiente pero me da flojera realizar la prueba... Supongo que la mayoria utilizara little endian */ nibble[0] = b & 0x0F; nibble[1] = b & 0xF0; nibble[1] = nibble[1] >> 4; //printf("Numero separado en nibbles '%c' : [%i,%i]\n",b,nibble[0],nibble[1]); i = 0; while(i < 2) { entrar = 1; //printf("Evaluando index nibble %i, buscando %i, index actual de la lista %i:%i\n",index_nibble,next/4,lista_actual,lista[lista_actual]); while(entrar && index_nibble == next/4) { bit_offset = next % 4; //printf("Encontrado., bit a modificar %i\n",bit_offset); if(valor) { nibble[i] |= 1 << bit_offset; } else { nibble[i] &= ~(1 << bit_offset); } lista_actual++; if(lista_actual < cuantos) { next = lista[lista_actual]; } else { entrar = 0; } modificados++; } index_nibble++; if(index_nibble == 25) { index_nibble = 0; generar_lista(); } i++; } return nibble[0] + (nibble[1] << 4);; } int main() { char mensaje[LEN+1]; unsigned int i = 0; Noise noise(1,1); //10 bytes modificados por cada 100 memset(mensaje,'A',LEN); printf("Mensaje antes del Ruido: %s\n",mensaje); while(i < LEN) { mensaje[i] = noise.modificar(mensaje[i]); i++; } printf("Mensaje despues del Ruido: %s\n",mensaje); printf("%u/%u\n",noise.modificados,noise.recibidos); }
Aun asi, yo sigo prefiriendo la funcion por PROBABILIDAD, ya que es la mas sencilla y rapida de implementar. Y funciona bien digan lo que digan en el largo plazo se comporta aproximadamente se esperaba y funcionaria aun mejor si la distribucion de los nimeros pseudo-aleatorios fuera mas uniforme. char noise(char byte,unsigned char cuantos, unsigned char valor) { int i = 0; recibidos+= 8; while(i < 8) { if((rand() % 100) < cuantos ) { modificados++; if(valor) { byte |= 1 << i; } else { byte &= ~(1 << i); } } i++; } return byte; }
|
|
« Última modificación: 18 Noviembre 2018, 02:14 am por AlbertoBSD »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Simulación de consola en VB
Programación Visual Basic
|
aaronduran2
|
4
|
3,866
|
12 Junio 2008, 20:29 pm
por aaronduran2
|
|
|
Simulacion Banco
Programación C/C++
|
Gerik
|
2
|
11,194
|
4 Octubre 2010, 06:44 am
por leogtz
|
|
|
Juego de simulacion
Juegos y Consolas
|
gamer12
|
1
|
2,766
|
6 Noviembre 2010, 18:57 pm
por Castiblanco
|
|
|
hilos simulacion
Java
|
bengy
|
3
|
3,253
|
20 Julio 2012, 07:06 am
por leogtz
|
|
|
Simulación de choques desde atrás.
Programación General
|
Tachikomaia
|
1
|
1,212
|
19 Noviembre 2024, 16:28 pm
por Tachikomaia
|
|