Използване на USB кабел за генериране на произволни числа

Имам мисъл, но не съм сигурен как да я осъществя. Искам да взема малко дълъг USB кабел и да включа двата края в една и съща машина. След това бих искал да изпратя сигнал от единия край и да измеря колко време ще отнеме, за да стигна до другия край. Мисля, че това трябва да накара сигнала да пристигне по различно време и това ще ме накара да получа произволни числа.

Може ли някой да предложи език, на който мога да направя това най-бързо? Нямам опит в изпращането на сигнали през usb и не знам откъде да започна или как да започна. Всяка помощ ще бъде високо оценена.

Просто искам да направя това като забавен домашен проект, така че нямам нужда от нищо официално и просто бих искал да видя дали тази идея може да проработи.

РЕДАКТИРАНЕ: Какво ще стане, ако съхранявам usb кабела в течен азот или вещество, също толкова студено, за да забавя сигнала възможно най-много (имам достъп до течен азот).


person Quillion    schedule 01.07.2013    source източник


Отговори (2)


Съжалявам, че не мога да коментирам (няма достатъчно повторения), но закъснението винаги трябва да е същото през жицата. Това може да ограничи истинската произволност на вашите числа. Плюс това, точното време на забавяне в проводника може да е по-кратко дори от цикъл на процесора.

Ако вашата операционна система е Windows, може да срещнете този тип проблем:

Защо .NET таймерите са ограничени до разделителна способност от 15 ms?

Очевидно минималната времева разделителна способност на Windows е около 15 ms.

РЕДАКТИРАНЕ: В отговор на вашата редакция с течен азот, според тези графики, може да имате повече късмет с топлината! Достатъчно интересно...

http://www.emeraldinsight.com/content_images/fig/1740240120008.png

person Elwood Hopkins    schedule 01.07.2013
comment
Използвам Linux, така че ще имам достъп до наносекунди и ще имам повече свобода. Но няма ли изобщо начин да се използва забавянето като генератор на произволни числа? - person Quillion; 01.07.2013
comment
Трудно е да се каже. Повечето генератори на произволни числа вземат начална стойност и след това изстрелват числото в математически лабиринт... Вярвам, че ако можете да измислите начин да използвате забавяне, той би бил доста различен от съществуващите алгоритми. - person Elwood Hopkins; 01.07.2013
comment
Помислих за това още малко и изглежда, че това, което правите, би било подобно на четене на данни от някаква произволна шина - което би било добър начин за получаване на произволни числа. Какви данни ще изпратите по кабела? Освен това течният азот във вашата редакция е интересна идея - звучите като амбициозен човек. Късмет! - person Elwood Hopkins; 01.07.2013
comment
Тъй като това е една и съща машина, бих искал да създам две нишки, едната изпраща данните и записва времето на изпращане, а втората записва данни веднага щом получи нещо. Просто трябва да намеря начин да го програмирам, тъй като нямам опит в USB комуникацията (особено на същия компютър). Предполагам, че ще опитам и на топлина, и на студ, за да видя кое ще даде по-добри резултати. - person Quillion; 01.07.2013
comment
Може би опитайте Python с PyUSB - открих, че Python е лесен за научаване. - person Elwood Hopkins; 02.07.2013

Искам да взема малко дълъг USB кабел и да включа двата края в една и съща машина.

няма да работи. USB връзката винаги е Host -> Device, компютърът може да бъде само хост. И комуникацията използва предсказуеми интервали от 1 ms - лошо за случайността.

Някои по-нови микроконтролери имат както RNG, така и USB на чип, по този начин можете да направите истински USB RNG.

Какво ще стане, ако съхранявам USB кабела в течен азот или вещество, също толкова студено, за да забавя сигнала

Сигналът ще пътува малко по-бързо, тъй като съпротивлението на кабела е по-ниско.

person Turbo J    schedule 03.07.2013