• ベストアンサー

『あまり』を均等に割り当てる方法

m÷nであまりが出た場合にあまりを均等に割り当ててn個のデーターを作ります。 例えば、 15100÷5000=3とあまり100となり、 このあまり100を5000個のデーターに均等に割り付けます。 この単純な例では、 50個ごとに1を加えるデーターができれば良いです。 3333...<--3のデーターが49個50個目が1加えられて4というような。 半端な分は無視できます。 どうかお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

No1,4です。 kintouとkintou()がかぶってますね・・・・すいません。 for i=0 to 5000 kintou(i)=除算の整数部 next kannkaku = 5000\除算の整数部 for i=kannkaku to 5000 step kannkaku kintou(i)=kintou(i) + 1 next 又は 除算の整数部=15100\3 kannkaku=5000/除算の整数部 for i=0 to 5000 kintou(i)=除算の整数部 + (i\kannkaku)^0 next と、ちょっと修正させてください。

colhan
質問者

お礼

皆様、回答ありがとうございます。 このプログラムは、サーボモーターの移動量を均等にするのに使うつもりです。 全移動量、mパルスをn回に分けて移動させます。 あまりを無視すると、移動量が短くなってしまい、均等に載せないと移動量が偏ってしまいます。 あまりの載せ方で、移動量が偏りを防ぐつもりです。 早速皆様の方法を試してみます。

その他の回答 (4)

回答No.4

No2の方のを見てよーやく理解しました。 kintou(0) = 3 kintou(1) = 3 ・・・・ kintou(49) = 3 kintou(50) = 4 kintou(51) = 3 ・・・ ですか。 なら、 除算の整数部=15100\3 for i=0 to 5000 kintou(i)=除算の整数部 next kintou = 5000\除算の整数部 for i=kintou to 5000 step kintou kintou(i)=kintou(i) + 1 next 又は 除算の整数部=15100\3 kintou=5000/除算の整数部 for i=0 to 5000 kintou(i)=除算の整数部 + (i\kintou)^0 next ですかね。 下のほうが毎回計算しているので実行速度は遅そうですが、ソースが短いと思います。 毎度ですが、試してないので改良が必要かと思います。

  • galoon
  • ベストアンサー率28% (38/133)
回答No.3

簡単に作ってみました。 Sub kintoh() Dim cnt As Integer Dim answer() As Integer Dim gokei, kosu As Long ' 割り振る元の合計値 ' gokei = 15100 ' 均等割の個数 ' kosu = 5000 ' 結果配列初期化 ' ReDim answer(kosu) As Integer For cnt = 1 To kosu ' Excelシミュレート用の出力 ' answer(cnt) = Int(cnt * gokei / kosu) - Int((cnt - 1) * gokei / kosu) ' 確認用 ' Debug.Print answer(cnt) Next cnt End Sub

colhan
質問者

お礼

実際に作ってみました。 上手く説明出来ませんが 貴方の式はパーペキ(パーフェクトに完璧)でした。 どのケースに於いても完全に均等に割り振れました。 ありがとうございました。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

n番目の「位置」=15100÷5000×nを切り捨て n番目の「データ」=n番目の「位置」-(n-1)番目の「位置」 では? Pos(00)=0 Pos(01)=3 Pos(02)=6 ~ Pos(49)=147 Pos(50)=151 Pos(51)=154 となりますから、 Data(01)=Pos(01)-Pos(00)=3 Data(02)=Pos(02)-Pos(01)=3 ~ Data(50)=Pos(50)-Pos(49)=4 Data(51)=Pos(51)-Pos(50)=3 となるハズ。

回答No.1

あまりを均等に分けるのは kintou=5000\100 for i=0 to 5000 step kintou kintou(i) = 1 next 見たいな感じじゃないですか? あんまり考えないで作ったので修正必要と思います。大体の考え方はこれでいいと思います。 >3333...<--3のデーターが49個50個目が1加えられて4というような。 この部分意味分からなかったので、自分でどうにかしてください。

関連するQ&A