slumpvis fördröjning?
slumpvis fördröjning?
hadde uppe detta för något år sedan och det kom inte till något vettigt resultat, nu börjar det bli aktuellt igen , så ny fråga
vill så enkelt som möjligt ha en slumpvis fördröjning
krasst sett såhär, från en manuell knapptryck så vill jag ha en slumpvis fördröjning på kanske 1 till 10 sekunder, räcker med 5 till 10 olika fördröjningar
mellanrummen mellan knapptryckningarna är relativt lång, och olika så där kan man ha fröet till slumptalen
förslag?
vill så enkelt som möjligt ha en slumpvis fördröjning
krasst sett såhär, från en manuell knapptryck så vill jag ha en slumpvis fördröjning på kanske 1 till 10 sekunder, räcker med 5 till 10 olika fördröjningar
mellanrummen mellan knapptryckningarna är relativt lång, och olika så där kan man ha fröet till slumptalen
förslag?
Det låter ju som att du redan har löst det mesta!
Vad är det för miljö?
Mikrokontroller?
Om vi antar att det är en mikrokontroller och kör någon form av snabb räknare på den. Det kan vara i hårdvara eller mjukvara. Det spelar egentligen ingen roll. Räknaren räknar t.ex tid (eller bara fri räkning) mellan tryckningarna. Det värde räknaren har när knappen trycks ned tar man låga bitarna på och gör om till din önskade tid. Det blir ganska nära en slumpmässig tid.
Vad är det för miljö?
Mikrokontroller?
Om vi antar att det är en mikrokontroller och kör någon form av snabb räknare på den. Det kan vara i hårdvara eller mjukvara. Det spelar egentligen ingen roll. Räknaren räknar t.ex tid (eller bara fri räkning) mellan tryckningarna. Det värde räknaren har när knappen trycks ned tar man låga bitarna på och gör om till din önskade tid. Det blir ganska nära en slumpmässig tid.
Får man inte en bättre spridning (och mindre förutsägbarhet) om man har en räknare och kastar om bitarna på? Så att MSB blir LSB?
Ex. om man vill köra tre bitar (8 olika fördröjningar) så tar man de tre lägsta bitarna (321) och kastar om (till 123) och använder värdet (0-7) för att bestämma fördröjningen (ex. 1-8 sekunder genom att addera 1).
För annars blir ju den slumpade fördröjningen nästan en linjär funktion av tiden mellan tryckningarna.
Ex. om man vill köra tre bitar (8 olika fördröjningar) så tar man de tre lägsta bitarna (321) och kastar om (till 123) och använder värdet (0-7) för att bestämma fördröjningen (ex. 1-8 sekunder genom att addera 1).
För annars blir ju den slumpade fördröjningen nästan en linjär funktion av tiden mellan tryckningarna.
den kommer att byggas in i relämiljö, men det kvittar
helst med 74xx eller 40xx, för att slippa programering
men kan tänka mig pic som andrahandsval
analoga lösningar välkomnas
som sagts, inget speciellt komplicerat, det ska bara inte vara samma tid från knapptyckning till händelse, det är det viktigaste
helst med 74xx eller 40xx, för att slippa programering
men kan tänka mig pic som andrahandsval
analoga lösningar välkomnas
som sagts, inget speciellt komplicerat, det ska bara inte vara samma tid från knapptyckning till händelse, det är det viktigaste
Kanske ett
http://en.wikipedia.org/wiki/Linear_fee ... t_register
som laddar en räknare när man trycker på knappen?
http://en.wikipedia.org/wiki/Linear_fee ... t_register
som laddar en räknare när man trycker på knappen?
> Får man inte en bättre spridning (och mindre förutsägbarhet) om man har en räknare och kastar om bitarna på?
Om "omkastningen" är känd så blir det varken lägre eller högre förutsägberhet, bara en annan förutsägberhet.
Sen så spelar det ju ingen roll om räknaren snurrar runt mycket snabbare än tiden mellan två tryck.
Om "omkastningen" är känd så blir det varken lägre eller högre förutsägberhet, bara en annan förutsägberhet.
Sen så spelar det ju ingen roll om räknaren snurrar runt mycket snabbare än tiden mellan två tryck.
Jo, men jag menade ju att för en person så blir det svårare att "fuska" om liten skillnad i väntetid ger stora skillnader i fördröjning, än om en liten skillnad i väntetid bara ger en liten skillnad i fördröjning.sodjan skrev: Om "omkastningen" är känd så blir det varken lägre eller högre förutsägberhet, bara en annan förutsägberhet.
Men det är sant att en riktigt snabb räknare går nog lika bra.
- prototypen
- Inlägg: 11108
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
En långsam RC oscillator med dutycycle runt 99,9% tryckknappen kopplar oscillatorns signal till vad som nu ska styras.
Du trycker in knappen och sedan kommer en kort puls (som sedan går att förlänga för att ge vad det nu är en vettig signal.)
Med två oscillatorer med stor olikhet i frekvens finns risken att den ena synkar på den andra, jag har provat med 1000:1 men nu är det bara 3:1 och då fungerar det.
Protte
Du trycker in knappen och sedan kommer en kort puls (som sedan går att förlänga för att ge vad det nu är en vettig signal.)
Med två oscillatorer med stor olikhet i frekvens finns risken att den ena synkar på den andra, jag har provat med 1000:1 men nu är det bara 3:1 och då fungerar det.
Protte
prototypen , börjar så smått få igång hjärnan igen, tog någon minut innan jag fattade vad du skrivit, smidigt, men förstår fortfarande inte det där med två oscillatorer
annars tror jag att jag fick ihop det med 2 st 4093 och en 4017, men då enbart 10 olika fördröjningar
kollade och det fanns till och med random i picbasic om man så vill
får prova lite när jag kommer igång igen
annars tror jag att jag fick ihop det med 2 st 4093 och en 4017, men då enbart 10 olika fördröjningar
kollade och det fanns till och med random i picbasic om man så vill
får prova lite när jag kommer igång igen
- prototypen
- Inlägg: 11108
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
"kollade och det fanns till och med random i picbasic om man så vill"
Du menar alltså att en PIC kan vara aktuell? Det kan knappast vara enklare då!
Gör en slinga som hela tiden adderar ett primtal till en variabel:
Main_Loop:
Random = Random + <Primtal>;
Om(Knapp_Nertryckt OCH Timer inte startat) Start_Timer med Random + 1 sekund.
goto Main_Loop.
Du menar alltså att en PIC kan vara aktuell? Det kan knappast vara enklare då!
Gör en slinga som hela tiden adderar ett primtal till en variabel:
Main_Loop:
Random = Random + <Primtal>;
Om(Knapp_Nertryckt OCH Timer inte startat) Start_Timer med Random + 1 sekund.
goto Main_Loop.
