|
TwojePC.pl © 2001 - 2025
|
 |
A R C H I W A L N A W I A D O M O Ś Ć |
 |
| |
|
liczby losowe w c++ , Chucky 17/11/04 20:00 w jaki sposob zrealizowac, 'losowanie' licz losowych :) w c++, jet jakas funkcja random, lub rand, ale jak losowac liczby typu float z konretnego przedzialu, np. -1 ... 1
prosilbym o przedstawienie tego w c , z malym opisem - jesli to nie bedzie zbyt duzo linijek :)
pozdro @llCorei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650 - rand zwraca dodatniego inta jeśli się nie myle , McKania 17/11/04 20:26
zadaj sobie przedział z jakiego chcesz losować [przez modulo na przykład :), załóżmy od 0 do 200], odejmij od każdej z uzyskanej liczby tyle, coby zeszło w ujemne [w naszym przypadku proponuje odjąć 100 i już mamy przedział od -100 do 100 :)] na koniec dzielisz przez 100
prosto, tanio, skutecznieconfig: skóra, fura i coreDuo ;) - hmm , akustyk 17/11/04 20:32
sprobuj tak:
#include <time.h>
int main(int argc, char** argv){
float x=0.0;
unsigned long MAX = -1;
srand(time(NULL));
x= (2*rand() / float(MAX)) - 1;
};
MAX to ma byc najwieksza mozliwa liczba long inthttp://akustyk.magma-net.pl - hmm , akustyk 17/11/04 20:33
jeszcze powinien byc #include <stdlib.h>, zeby rand() i srand() poszlyhttp://akustyk.magma-net.pl - cos to robi , Chucky 17/11/04 20:51
ale sa zbyt male roznice miedzy kolejnymi losowanymi liczbami, zaczynaja sie dopiero w 4 miejscu po przecinku
potrzebuje czegos co bedzie losowac z przedzialu -1...1
to mi losuje -1 ... -0.99900, wiec troche maly przedzial :)
please help, i need it...Corei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650 - hmm , akustyk 17/11/04 21:05
to cos jest nie tak. wez zamiast MAX dziel przez 1e10, bedziesz mial do 10 miejsc po przecinkuhttp://akustyk.magma-net.pl - cos jest nadal nie tak... , Chucky 17/11/04 22:33
...:(Corei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650
- hmm , akustyk 17/11/04 23:01
zobacz www.cplusplus.com i pogrzeb w necie. musi dzialac. zamiast float wez tez double, zeby byla wieksza dokladnoschttp://akustyk.magma-net.pl - cos takiego , Chucky 17/11/04 23:45
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#include <time.h>
int main(int argc, char** argv){
double x=0.0;
//unsigned long MAX = -1;
srand(time(NULL));
for (int i=0;i<=1000;i++)
{
x= 2*((2*rand() / 100000.0))-1;
cout<<x<<"\n";
}
system("pause");
};
i dziala
jest w przedziale -1 ... 1 :)
thx za pomocCorei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650 - hmm , akustyk 17/11/04 23:48
no ale to ze dziala jeszcze niewiele mowi.
takie losowanie ma raczej tendencje do wybierania czesciej pewnych fragmentow przedzialu [-1,1] niz innych (czyli inaczej: nie jest to rozklad jednostajny).
jak sie podzieli przez polowe najwyzszej wartosci typu long, to bedzie lepiejhttp://akustyk.magma-net.pl - tzn? , Chucky 18/11/04 10:22
gdzie to zmienic?Corei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650 - juz doszedlem, co i jak , Chucky 18/11/04 13:52
thx za pomoc :)Corei5 9600K, Z390 PRO, 2x16 Vengeance
3200Mhz, GTX 2060 Super, Seasonic X-650
- to ja wkleje sampla z najlepszego helpa :P , bartek_mi 18/11/04 18:38
// crt_rand.c
/* This program seeds the random-number generator
* with the time, then displays 10 random integers.
*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main( void )
{
int i;
/* Seed the random-number generator with current time so that
* the numbers will be different every time we run.
*/
srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() );
}
Sample Output
19430
28222
9710
12070
7513
9501
1767
26041
11872
4097
by MSDN 2003dzisiaj jest jutrzejszym wczoraj |
|
|
|
 |
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL |
 |
|
|
|