diff --git a/projects/sph/src/main.cpp b/projects/sph/src/main.cpp
index 54228b433f1acdf74b674315a77ebf5b4f384fd6..ddd518a3fd136c58e75539eda600f7dabdb7bbe2 100644
--- a/projects/sph/src/main.cpp
+++ b/projects/sph/src/main.cpp
@@ -136,11 +136,18 @@ int main(int argc, const char **argv) {
     int numberParticles = 10000;
     std::vector<Particle> particles;
     for (int i = 0; i < numberParticles; i++) {
-        float randPos = (float)std::rand() / (float)RAND_MAX;
-        glm::vec3 pos = glm::vec3(0.f);
-        float randVel = (float)std::rand() / (float)RAND_MAX;
-        glm::vec3 vel = glm::vec3(0.f);
-
+        const float lo = 0.4;
+        const float hi = 0.6;
+        const float vlo = 0.4;
+        const float vhi = 0.6;
+        float x = lo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(hi-lo)));
+        float y = lo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(hi-lo)));
+        float z = lo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(hi-lo)));
+        float vx = vlo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(vhi-vlo)));
+        float vy = vlo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(vhi-vlo)));
+        float vz = vlo + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(vhi-vlo)));
+        glm::vec3 pos = glm::vec3(x,y,z);
+        glm::vec3 vel = glm::vec3(vx,vy,vz);
         particles.push_back(Particle(pos, vel));
     }
 
@@ -264,7 +271,7 @@ int main(int argc, const char **argv) {
 
         vkcv::PushConstants pushConstantsCompute (sizeof(glm::vec2));
         pushConstantsCompute.appendDrawcall(pushData);
-        
+
         uint32_t computeDispatchCount[3] = {static_cast<uint32_t> (std::ceil(numberParticles/256.f)),1,1};
         core.recordComputeDispatchToCmdStream(cmdStream,
                                               computePipeline1,