Matlab
#Matlab TheThe microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)<0),2)
Records 10 seconds of sound, finds the number of negative samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following slightly longer code speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)<0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, the code outputs zero 51 times. 100 runs under noisy conditions produced zero 40 times.
Edit: Thanks to Emil for pointing out a flaw in the original code :-)
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)<0),2)
Records 10 seconds of sound, finds the number of negative samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following slightly longer code speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)<0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, the code outputs zero 51 times. 100 runs under noisy conditions produced zero 40 times.
Edit: Thanks to Emil for pointing out a flaw in the original code :-)
Matlab
The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)<0),2)
Records 10 seconds of sound, finds the number of negative samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following slightly longer code speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)<0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, the code outputs zero 51 times. 100 runs under noisy conditions produced zero 40 times.
Edit: Thanks to Emil for pointing out a flaw in the original code :-)
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)~=0<0),2)
Records 10 seconds of sound, finds the number of nonzeronegative samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following variationslightly longer code speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)~=0<0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, itthe code outputs zero 5351 times. 100 runs under noisy conditions produced zero 40 times.
Edit: Thanks to Emil for pointing out a flaw in the original code :-)
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)~=0),2)
Records 10 seconds of sound, finds the number of nonzero samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following variation speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)~=0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, it outputs zero 53 times.
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)<0),2)
Records 10 seconds of sound, finds the number of negative samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following slightly longer code speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)<0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, the code outputs zero 51 times. 100 runs under noisy conditions produced zero 40 times.
Edit: Thanks to Emil for pointing out a flaw in the original code :-)
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)~=0),2)
Records 10 seconds of sound, finds the number of nonzero samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following variation speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)~=0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, it outputs zero 53 times.
#Matlab
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)~=0),2)
Records 10 seconds of sound, finds the number of nonzero samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following variation speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)~=0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, it outputs zero 53 times.
#Matlab The microphone solution:
recObj=audiorecorder;recordblocking(recObj,10);rem(sum(getaudiodata(recObj)~=0),2)
Records 10 seconds of sound, finds the number of nonzero samples in the recording and outputs 0 if this number is even and 1 if it's odd. Thus 0 with 50% probability. The approach means that even small amounts of noice, unavoidable in a silent recording, will be enough to generate a random output. The following variation speeds up the number generator by using a shorter recording, compensated with a higher bitrate, which gives more noise.
recObj=audiorecorder(8000,16,1);recordblocking(recObj,0.1);rem(sum(getaudiodata(recObj)~=0),2)
In a test under quiet conditions, I find that in 100 runs of the latter code, it outputs zero 53 times.