diff --git a/plugins/channelrx/demoddatv/leansdr/dsp.h b/plugins/channelrx/demoddatv/leansdr/dsp.h index e6f924d6c..d763cb18f 100644 --- a/plugins/channelrx/demoddatv/leansdr/dsp.h +++ b/plugins/channelrx/demoddatv/leansdr/dsp.h @@ -303,8 +303,8 @@ struct wgn_c : runnable do { - x = 2 * drand48() - 1; - y = 2 * drand48() - 1; + x = 2 * rand_compat() - 1; + y = 2 * rand_compat() - 1; r2 = x * x + y * y; } while (r2 == 0 || r2 >= 1); diff --git a/plugins/channelrx/demoddatv/leansdr/dvbs2.h b/plugins/channelrx/demoddatv/leansdr/dvbs2.h index 2906c66d5..b9f4fe0e1 100644 --- a/plugins/channelrx/demoddatv/leansdr/dvbs2.h +++ b/plugins/channelrx/demoddatv/leansdr/dvbs2.h @@ -782,7 +782,7 @@ struct s2_frame_receiver : runnable // is at same level as during steady-state demodulation. // This has no effect if the first detection is successful. float duty_factor = 5; - discard = modcod_info::MAX_SYMBOLS_PER_FRAME * omega0 * (duty_factor+drand48()-0.5); + discard = modcod_info::MAX_SYMBOLS_PER_FRAME * omega0 * (duty_factor+rand_compat()-0.5); } } diff --git a/plugins/channelrx/demoddatv/leansdr/math.h b/plugins/channelrx/demoddatv/leansdr/math.h index 0d33c552a..f0e257381 100644 --- a/plugins/channelrx/demoddatv/leansdr/math.h +++ b/plugins/channelrx/demoddatv/leansdr/math.h @@ -188,6 +188,15 @@ inline float fmodfs(float v, float m) return (v>=m/2) ? v-m : (v<-m/2) ? v+m : v; } +inline double rand_compat() +{ +#ifdef WIN32 + return double(rand())/RAND_MAX; +#else + return drand48(); +#endif +} + // Simple statistics template