[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart4 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
304: 2021/05/27(木)10:06 ID:a0FlewyP(3/10) AAS
適当な振れ幅なら
int AGI = 30 + Random.Range(-5,5+1)
みたいに書けると思う

intは負の値いけたっけ?
floatは多用するんだけど(-30,30+1)にできるなら
30を基準にして0〜60が作れる
305: 2021/05/27(木)10:19 ID:coz7zI8o(1/2) AAS
>>292
それをしたいならifじゃなくてswitchかな

for (int i =0; i < 300; i++)
{
int num=Random.Range(0, 10);
switch(num){
case 0: Nunber0++;
break;
case 1: Nunber1++;
break;
&#8226;&#8226;&#8226;
306: 2021/05/27(木)10:26 ID:gb+qRYu8(2/2) AAS
10個の乱数決めるのにRandom300回か
面白いね君たち
307: 2021/05/27(木)10:31 ID:4V3hIemC(1/2) AAS
ランダムな9個の仕切りで分けるのはちゃんとランダム?
308: 2021/05/27(木)10:59 ID:UiFe0pyC(3/3) AAS
うーん、ランダム
309: 2021/05/27(木)11:01 ID:a0FlewyP(4/10) AAS
外部リンク:qiita.com
配列の正規化を使ってlist*300すると簡単に出せるけど
floorだから足しても300にはならないが非常にシンプル
画像リンク

310
(2): 2021/05/27(木)11:17 ID:coz7zI8o(2/2) AAS
>>289
これをベースに考えるなら
変数を10個作るのではなく配列にして
後からランダムに並び替えるのがいいかな

float[] array = new float[10];

//この間で数値の振り分け

float[] number = array.OrderBy(i => Guid.NewGuid()).ToArray();
311: 2021/05/27(木)12:50 ID:ocyZxuLk(1/3) AAS
0〜300の乱数を一つも被らずに10個ゲットしたいって話ならこんな感じ

int v = 300 / 10;
List<int> Nums = new List<int>();
for (int i = 0; i < 10; i++) {
Nums.Add(Random.Range (((v * (i+1)) - v), (v * (i+1))+1 ) ) ;
print( Nums[i]);
}
312
(3): 2021/05/27(木)13:37 ID:un4LUW1y(2/5) AAS
便利なサイトがあったので、コード貼ります。
外部リンク:ideone.com

300を10個の変数に振り分けたいんですよ。

例1(均等に振り分けた場合)
A30B30C30D30E30F30G30H30I30J30   ※合計300

例2(ランダムに振り分けた場合)
A55B11C21D46E8F26G42H35I30J26   ※合計300

この例2をやりたいんですよ。
現在のfor文を300回やるパターンでも例2は再現できてますが、
あまりよろしくないとの意見もあるので、現在模索中です。
313: 2021/05/27(木)14:32 ID:iQQ16bCL(1) AAS
二枚の白い板を、隙間なく並べたとき、板の継ぎ目が全く見えないのですが、
ライトマップをベイクすると、板の色が違う色になってしまい、継ぎ目が解るようになってしまいます。
これを、継ぎ目が解らないようにするには、どのようにすればよいですか?
ご存じの方、いらっしゃいましたら、教えていただけると嬉しです。
宜しくお願いいたします。
314
(1): 2021/05/27(木)14:33 ID:SW5j+p99(1/6) AAS
>>312
うーん>>310で実現出来てると思うんだけどダメな理由を教えて?
>>289では最後に0が固まるのが不満なんだよね?
数値が決まってからランダムに並べ替えるだけで問題解決だと思ってるのだけど

それとも0が複数出るのが嫌って事なのかな?
その辺は下限値を決めるとかいくらでも出来ると思うけど
315
(3): 2021/05/27(木)14:34 ID:a0FlewyP(5/10) AAS
>>312
外部リンク:ideone.com
forで回したいならコレでいい
316
(1): 2021/05/27(木)14:40 ID:UO0LeoxU(1) AAS
>>312
10個の変数に割り振る際の各変数の取りうる値の範囲とか、ばらつきや片寄り具合をどうしたいのとか、仕様は明確になってるの?
そちらを決めないままアルゴリズムを模索しても意味がないよ
よろしくないという意見は自分がやりたいことに合致してる?ただダメと言われたから他の方法にしたいとか思ってないか?
317
(1): 2021/05/27(木)15:10 ID:un4LUW1y(3/5) AAS
>314
シンプルで良いコードだと思うんですけど、
>310>289をベースにしているので、ふり幅があまりにも大きすぎるのと、
0が多すぎるので、>289の考え方自体が間違ってたんですよ。
すみません。

>315
ありがとうございます。

>316
残念ながら、仕様は明確ではないですね。
ある程度ふり幅があって、数値がバラバラになってくれればいいという感じです。
318
(1): 2021/05/27(木)15:33 ID:a0FlewyP(6/10) AAS
外部リンク:ideone.com
whileで配列がnになるまで回すなら
こういう書き方も出来る

sum:300,

9,48,1,48,23,59,1,27,27,57,

キャラメイクでアタリを引くまでリセマラはアリな派
ハズレは大いにアリじゃね?
319
(1): 2021/05/27(木)15:36 ID:SW5j+p99(2/6) AAS
>>317
ならこんなんで
int point = 300;
int[] num = new int[10];
for(int i = 0; i < 10; i++){
if(i == 9)
&#160; num[i] = point;
else if(point == 0){
&#160; num[i] = 0;
}
else{
int tmpPoint = Random.Range(0,61);
if(tmpPoint < point) {
&#160; num[i] = tmpoint;
&#160; point -= tmpPoint;
}
else{
&#160; num[i] = tmpoint;
&#160; point = 0;
}
}}
320
(2): 2021/05/27(木)15:37 ID:4V3hIemC(2/2) AAS
外部リンク:ideone.com
こうだな
321: 2021/05/27(木)15:39 ID:SW5j+p99(3/6) AAS
タイポしまくってるのはすまん直してくれ
スマホからなんだ
322
(2): 2021/05/27(木)16:08 ID:SW5j+p99(4/6) AAS
さすがにアレなんで>>319はこっちに書き直しました
外部リンク:ideone.com
323: 2021/05/27(木)16:18 ID:a0FlewyP(7/10) AAS
>>320
本日の一等賞やな

スマートで面白いんだけど何でソートして引いただけで
こうなるのかが分からない

何かヒントないです?
324
(1): 2021/05/27(木)17:00 ID:un4LUW1y(4/5) AAS
>315>318>322は採用させていただきます。

>320
すみません。
コードを丸コピーしてもエラー吐いてうまく動作しませんでした。

採用させていただいた分でこうなってます。
外部リンク:ideone.com

皆様、ありがとうございました。
325
(1): 2021/05/27(木)17:23 ID:a0FlewyP(8/10) AAS
public static void Main() → void Start()
var nums = new Test().Divide(m, n); → TestがClass名だからそこ直す
Console.WriteLine(string.Join(',' , nums)); → print(string.Join(','.ToString(), nums));

エラーは間違いのお知らせだから、
そこは自分で読んで直せるように頑張ろうず

Next()がLagged Fibonacci法の引き算法を使った疑似乱数までは分かったけど
あっコレどうしてなのか考えたらダメな奴だ 頭から煙が出るぜうぇっw
326
(1): 2021/05/27(木)17:33 ID:SW5j+p99(5/6) AAS
>>324
面白い採用の仕方でわろたw
採用するなら蛇足かもですが>>322
Random.Renge内の数値幅は好みに調整してね
ちょっとためした感じだと[20,36]ぐらいにすると
最後のパラメータだけ突出するので
一芸に秀でた数値振り分けが出来て好きかな

もちろんその場合は最後に配列の並べ替えは必要です
327
(1): 2021/05/27(木)17:37 ID:0zSxDdeL(1) AAS
>>284
Unityもそうだけど最近の開発環境ってコードの書き方でつまずくことよりも、
むしろコードはどこからどう見ても正しいのにエラーや警告吐かれる開発環境側のトラブルの方が圧倒的に多い
それを大した知識や経験のない人間が知った顔して「おま環」で終わらせようとするのはどうなんかなーって思うけどね
328: 2021/05/27(木)17:46 ID:a0FlewyP(9/10) AAS
どう見てもデバッガやコンパイラのエラーじゃないんだが
何をもって正しいとしているのか基準が分からないな
329
(1): 2021/05/27(木)18:26 ID:41oxctKh(1) AAS
if( )
if( )
if( )
とif文を並列して続けるのはよくないということですが
具体的にどういう問題が起きるのでしょうか
330: 2021/05/27(木)18:35 ID:a0FlewyP(10/10) AAS
具体的にifはよくないと言った人に聞けばよくない?
331: 2021/05/27(木)18:57 ID:SW5j+p99(6/6) AAS
>>329
必要な場合だってあるし良くないなんて事はないと思うけど
大抵は別の方法で書いた方が簡潔に書けるからそう言うのかもしれない

例えば>>292みたいにifを10回続けるより
>>302のようにSwitch1回で済ました方がいいでしょ
332
(2): 2021/05/27(木)19:44 ID:ocyZxuLk(2/3) AAS
if文を使わず合計300の10個の乱数をゲットしたいならこんな感じかな

List<int> Nums = new List<int> ();
var Cou = 0;
for (int i = 0; i < 10; i++) {
Nums.Add (Random.Range (0, 30));
Cou += Nums[Nums.Count - 1];
}
var v = (300 - Cou) / 10;
Cou = 0;
for (int i = 0; i < 10; i++) {
Nums[i] += v;
Cou += Nums[i];
}
Nums[Nums.Count - 1] += (300 - Cou);

//16+34+43+34+39+17+41+23+18+35+ 合計300
333: 2021/05/27(木)21:16 ID:SLQj1j9d(3/3) AAS
>>332
一番最後のやつが統計的に優位にでかくなりそう
1-
あと 669 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.022s