Skocz do zawartości

Funkcja losowa w C


devonport

Pomocna odpowiedź

Chcę napisać program który by po dojechaniu robota do przeszkody skręcał losow w lewo bądz w prawo, poprostu był nieprzewidywalny i losowy to szkielet programu w RobotC czyli faktycznie C

for(i=0; ;i++)                                    //petla nieskączona
{ 
   ??????                                    //brakuje funkcji losowej
   ??????                                        //brakuje przełącznika
  while(SensorValue[sonarSensors] > 25)    
  { 
     motor[motorA] = 55;                 //motor A jedzie do przodu 
     motor[motorB] = 55;                 //motor B jedzie do przodu   
} 

motor[motorA] = 50;           //sensor<25 cm wykonuje sie instrukcja  skret 
motor[motorB] = -50;        //sensor<25 cm wykonuje sie instrukcja  skret
 wait1Msec(600); 

Jak zastosować funkcje losową dla alternatywnej instrukcji?

Mam to zrobione w NXT-G tak:

Pętla for

funkcja losowa random

switch z dwoma altyernatywnymi wyborami

zamkniecie pętli for.

Działa perfekcyjnie

Czekam na wszelkie sugestie 😉

Link do komentarza
Share on other sites

Nie mam zielonego pojęcia o RobotC, dopiero dziś się dowiedziałem, że coś takiego wymyślono 🙂

Przerobiłem ten listing, tak z nudów, żeby "nabijać posty" 😅

może będzie działać

powodzenia !!!

for(;;)                                    //pętla nieskończona
{ 
 if(SensorValue[sonarSensors] > 25)   
 { 
   motor[motorA] = 55;                 //motor A jedzie do przodu
   motor[motorB] = 55;                 //motor B jedzie do przodu   
 }else
 { 
   if(random(100) > 50 ) 
   { 
     motor[motorA] = 50;           //sensor<25 cm wykonuje się instrukcja  skręt
     motor[motorB] = -50;        
     wait1Msec(600); 
   }else
   { 
     motor[motorA] = -50;           //sensor<25 cm wykonuje się instrukcja  skręt
     motor[motorB] = 50;        
     wait1Msec(600) 
   } 
} 

} 
  • Lubię! 1
Link do komentarza
Share on other sites

oto cały program w robotC

#pragma config(Sensor, S1,     sonarSensors,        sensorSONAR) 
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

task main() 
{ 
for(;;)                                    //pętla nieskończona
{ 
 if(SensorValue[sonarSensors] > 25) 
 { 
   motor[motorA] = 55;                 //motor A jedzie do przodu
   motor[motorB] = 55;                 //motor B jedzie do przodu
 }else
 { 
   if(random(100) > 50 ) 
   { 
     motor[motorA] = 50;           //sensor<25 cm wykonuje się instrukcja  skręt
     motor[motorB] = -50; 
     wait1Msec(600); 
   }else
   { 
     motor[motorA] = -50;           //sensor<25 cm wykonuje się instrukcja  skręt
     motor[motorB] = 50; 
     wait1Msec(600); 
   } 
} 
}} 

Działa doskonale robocik jezdzi to w lewo to w prawo, a cos innego niż fifty/fifty

(random(100) > 20

też jest ok

Własnie o tą funkcje random mi chodziło ale proste tylko jak się niewie to głowa boli 🤯

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.