Random number generator now works with size_t

git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@869 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
Jan Möbius
2013-07-24 09:38:26 +00:00
parent 420b5e5928
commit d3cd7bfe06
3 changed files with 11 additions and 8 deletions

View File

@@ -63,12 +63,12 @@ namespace OpenMesh {
//== IMPLEMENTATION =========================================================== //== IMPLEMENTATION ===========================================================
RandomNumberGenerator::RandomNumberGenerator(const double _resolution) : RandomNumberGenerator::RandomNumberGenerator(const size_t _resolution) :
resolution_(_resolution), resolution_(_resolution),
iterations_(1), iterations_(1),
maxNum_(RAND_MAX + 1.0) maxNum_(RAND_MAX + 1.0)
{ {
double tmp = resolution_; double tmp = double(resolution_);
while (tmp > (double(RAND_MAX) + 1.0) ) { while (tmp > (double(RAND_MAX) + 1.0) ) {
iterations_++; iterations_++;
tmp /= (double(RAND_MAX) + 1.0); tmp /= (double(RAND_MAX) + 1.0);
@@ -91,7 +91,7 @@ double RandomNumberGenerator::getRand() const {
return randNum / maxNum_; return randNum / maxNum_;
} }
double RandomNumberGenerator::resolution() const { size_t RandomNumberGenerator::resolution() const {
return maxNum_; return maxNum_;
} }

View File

@@ -56,6 +56,8 @@
#include <OpenMesh/Core/System/config.h> #include <OpenMesh/Core/System/config.h>
#include <cstdlib>
//== NAMESPACES =============================================================== //== NAMESPACES ===============================================================
@@ -68,6 +70,7 @@ namespace OpenMesh {
/** Generate a random number between 0.0 and 1.0 with a guaranteed resolution /** Generate a random number between 0.0 and 1.0 with a guaranteed resolution
* ( Number of possible values )
* *
* Especially useful on windows, as there MAX_RAND is often only 32k which is * Especially useful on windows, as there MAX_RAND is often only 32k which is
* not enough resolution for a lot of applications * not enough resolution for a lot of applications
@@ -80,20 +83,20 @@ public:
* *
* @param _resolution specifies the desired resolution for the random number generated * @param _resolution specifies the desired resolution for the random number generated
*/ */
RandomNumberGenerator(const double _resolution); RandomNumberGenerator(const size_t _resolution);
/// returns a random double between 0.0 and 1.0 with a guaranteed resolution /// returns a random double between 0.0 and 1.0 with a guaranteed resolution
double getRand() const; double getRand() const;
double resolution() const; size_t resolution() const;
private: private:
/// desired resolution /// desired resolution
const double resolution_; const size_t resolution_;
/// number of "blocks" of RAND_MAX that make up the desired _resolution /// number of "blocks" of RAND_MAX that make up the desired _resolution
unsigned int iterations_; size_t iterations_;
/// maximum random number generated, which is used for normalization /// maximum random number generated, which is used for normalization
double maxNum_; double maxNum_;

View File

@@ -116,7 +116,7 @@ update_buffer(VHierarchyNodeHandle _node_handle)
if (buffer_[none_zero_pos] != 0) break; if (buffer_[none_zero_pos] != 0) break;
} }
window_max_ = buffer_min_ + none_zero_pos + 1; window_max_ = buffer_min_ + none_zero_pos + 1;
for(none_zero_pos=0; none_zero_pos < buffer_size(); ++none_zero_pos) for(none_zero_pos=0; none_zero_pos < int(buffer_size()); ++none_zero_pos)
{ {
if (buffer_[none_zero_pos] != 0) break; if (buffer_[none_zero_pos] != 0) break;
} }