質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.23%

  • JavaScript

    11824questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3~6の間の整数になるランダムな数字でその日は常に同じ数字になるようにするには?

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 128

yasuzombie

score 2

説明が難しいですが

3~6の間のランダムな整数を出力するのは簡単なのですが

その処理を動かす日は、常に同じ数字を出力したいです。

要するに処理するごとにランダムではなく。
日が変わるごとにランダムに数字を変えたいです。3~6の間で。

処理を実行する日は、常に同じ数字にしたいです。

1日  5
2日  3
3日  6
4日  4
5日  6
6日  3
7日  5
8日  4

言語はjavascript
ウェブサイトで使います

日によってランダム
連番はNGです
誰がアクセスしても、その日の実行結果は同じにしたいです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+5

日付から、何らかのハッシュ値を作って、その値を4で割った余りを元にすればいいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/26 00:44 編集

    勘違いしていたようなので削除

    キャンセル

  • 2017/12/26 07:10

    ご回答ありがとうございました。

    キャンセル

checkベストアンサー

+2

 要件の確認

質問文上にある要件は3つありますが、

  • 日によってランダム
  • 連番はNG
  • その処理を動かす日は、常に同じ数字を出力

2つの解釈が成り立ちます。

(A) どのクライアント端末からアクセスしても、同じ日にアクセスしたら同じ番号を出力したい
(B) 同じクライアント端末からアクセスした際に同日実行は常に同じ数字を出力したい

otn さんは (A) と解釈し、yambejp さんは (B) と解釈しました。

(2017/12/25 23:05追記)

条件が追加されました。

  • 誰がアクセスしても、その日の実行結果は同じ

(A) が正解のようです。

 規則性を考える

yambejp さんが指摘されているように、ここまで規則性が決まっていると、これは乱数ではありません。
「連番はNG」のルールより、次の規則が成り立ちます。

  • 3 の次は 5 or 6
  • 4 の次は 6
  • 5 の次は 3
  • 6 の次は 3 or 4

従って、3, 6 の時だけユニークな固定値で次の値を決定すれば良い。
計算しやすいように、[0-3] に直すと、こうなります。

  • 0 の次は 2 or 3
  • 1 の次は 3
  • 2 の次は 0
  • 3 の次は 0 or 1

重要なのは昨日の番号と今日の番号が連番にならない事なので、昨日の番号を求められるようになっていなければなりません。
とりあえず、1日を「0」として計算すればいいでしょう。

  • 1日 … 0
  • 2日 … 3 // [2, 3][new Date().getDate() % 2]
  • 3日 … 1 // [0, 1][new Date().getDate() % 2]
  • 4日 … 3
  • 5日 … 1 // [0, 1][new Date().getDate() % 2]
  • 6日 … 3
  • 7日 … 1 // [0, 1][new Date().getDate() % 2]

この条件では2が永遠に出ないので、特定条件下(4で割り切れるか等)で日付に1を足すアルゴリズムにする必要があります。
後は、1日から本日までを順番に計算していけば、良いでしょう。

Re: yasuzombie さん

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/26 07:11

    ご丁寧な回答ありがとうございました。
    解決できそうです。

    キャンセル

+2

日によってランダム
連番はNGです 

連番がNGという時点ですでにランダムではないように見えますが?
単純にMath.randomするとして結果をクッキーに保持します。

仮にクッキー:num

  • numが存在しなければランダムな数字を抽選します。
  • 得た値を当日の23時59分59秒を生存期限としてnumを保存します
  • numが存在していればその値を表示します

上記で日ごとにランダムな日付を表示できます。
これにくわえ、連番でNGがでなくするためには、
前回の抽選値と今回の抽選値を1日後の23時59分59秒まで保持すれば調整できるでしょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/26 07:09

    ご回答ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.23%

関連した質問

  • 解決済

    android imageをランダムに並べる方法

    android開発の質問よろしくお願いします。 画像を格納しランダムに複数表示する方法を教えてください。 ランダムに複数表示する方法があるなら特に格納しなくてもいいのですが。

  • 受付中

    Ripple Effectについて 

    lollipopのRipple Effectを動的にカスタマイズしています。Effectの色をランダムにしたいので、hairetu3の中にres/valuesの色を並び替えて、それ

  • 解決済

    <input type="text">のvalueの値に他要素の文字列を挿入したい

    <input type="text">のvalueの値に、他要素の文字列を挿入したいです。 具体的には以下の通りです。 <input type="text" name="hoge

  • 解決済

    multipart/form-dataのバウンダリ文字列生成アルゴリズム

    multipart/form-dataのバウンダリ文字列生成アルゴリズムについて教えてください。データの中にその文字列が含まれてはいけないとのことですが、ブラウザやライブラリなどで

  • 受付中

    Swift ランダムについて

    白いところ踏んだら死亡のようなランダムで黒いところが表示するにはどのように表現したら良いでしょうか?教えてください!よろしくお願いします!

  • 解決済

    画像ランダム表示の際の変数宣言の場所による挙動の違い

    前提・実現したいこと 下記のようなソースでロード時に全ての画像をランダムにフェードイン表示したいのですが、 var setElm = $('.load > ul > li');

  • 受付中

    平行四辺形内のマッピングについて

    前提・実現したいこと 平行四辺形内のランダムな位置を取得したいです。 下記のページを参考にしているのですが2箇所わからない点があります。 コードのex=[0.5,0.0]が基

  • 解決済

    チェックしているつもりがNullPointerException

    抜粋の中の以下の行でNullPointerExceptionが発生してしまいます。 きちんとwhile 文でチェックしているはずですが、なぜでしょうか。 random_nu

同じタグがついた質問を見る

  • JavaScript

    11824questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。