ニュートン物理学の要点は、それがランダムではなく、決定論的であるということです。同じボールを同じ壁に同じ角度、同じ速度、同じスピンで投げると、毎回同じ場所にボールが行きます。
この種のプログラムは、プログラミングと物理学の両方にとって本当に素晴らしい学習の機会です。まず、非常に単純なバウンスをシミュレートするプログラムを作成することをお勧めします。お気づきのように、オブジェクトが真っ直ぐ下に移動して水平面に当たると、バウンスを単純に垂直速度成分を反転させるものとしてモデル化できます。正しく理解してください。重力も、何もありません。それは素晴らしいスタートです。
次に、同じ方法で、水平壁の跳ね返りを追加してみます。
次に、水平方向または垂直方向に位置合わせされていない壁の跳ね返りを追加してみてください。ここで、ベクトルと三角法がどのように機能するかを学ぶ必要があります。壁を斜めに打つことによって、ボールの速度のどの要素が変化するかを理解する必要があるからです。
次に重力を追加します。次に、空気からの摩擦を追加します。次に、ボールが回転している可能性があるという事実を追加します。ボールの変形をモデル化できるように、弾性を追加します。
その点に到達したら、ランダム性を導入したい場合は、それを行う方法を理解できるようになります。たとえば、「ボールが壁にぶつかって変形したときに、変形を0〜10%変化させるランダム要素を導入します」と言うことでランダム性を導入できます。これにより、シミュレーションがボールを跳ね返す方法が変わります。さまざまな種類のランダム性を試すことができます。たとえば、ランダムな気流を追加します。