ホームページ >バックエンド開発 >PHPチュートリアル >アルゴリズムについて質問する

アルゴリズムについて質問する

WBOY
WBOYオリジナル
2016-06-23 14:14:491105ブラウズ

この投稿は Specs_ によって最終編集されました: 2013-07-01 10:02:02



割引プロモーションに関するアルゴリズムの問​​題があります。ここで皆さんに質問したいと思います。 。

割引やプロモーションが必要な製品が多数あり、これは抽選によって達成する必要があります。

たとえば、10% 割引での当選確率は 40%、
20% 割引での当選確率は 10%、
30% 割引での当選者数は 120 名、
当選者数40% 割引の場合は 10 です、

次に、このような関数を実装するにはアルゴリズムをどのように記述する必要がありますか?

ディスカッションへの返信 (解決策)

アルゴリズムはまだないはずです

簡単な例を見てみましょう
勝率は 10% オフです

20 についても同様です。 % オフと 10%

当選率は、人数ごとに確率を推定し、当選者数をデータベースに保存する必要があります。残りの当選者数が 0 に達すると、確率は 0 に調整できます。

40% オフから数えて、より高い賞品を獲得するために下に進みます。もはや中低ではありません

もちろん、これは私が考えた簡単な解決策です。アルゴリズムレベルで正確かつ効率的な実装方法があれば、Tongqiu Learning

アルゴリズムは存在しないはずです


簡単な例を見てみましょう
勝率 40% を 10% オフにすると、

$num = rand(0,9);if($num <4){    //中奖代码}else{    //未中奖代码}

20% と同じになります。 10% オフ

一定数の当選者の場合、確率を推定し、同じ方法で当選するかどうかを計算する必要があります
当選者の数をデータベースに保存し、残りの当選者の数が 0 になったとき確率を 0 に調整するだけです。

40% オフから始めてカウントダウンすると、高当選者は中当選者と低当選者ではなくなります。私はこの考えで宝くじを書いていました。簡単ではありますが、基本的にはこれで十分です。

$num = rand(0,9);if($num <4){    //中奖代码}else{    //未中奖代码}

アルゴリズムについて話す必要すらありません


簡単な例を見てみましょう
10% 割引で勝率が 40% の場合、

/** 获取折扣率,这里只是随机获取 *  对于7、6折的,提前/之后判断是否达到数量,然后给予10%的几率。 */function luckRate(){	$randn = rand(1,10);	$re = 1;	switch ($randn)	{		case 1:		case 2:		case 3:		case 4:			$re = 0.9;			break;		case 5:			$re = 0.8;			break;		case 6:			$re = 0.7;			break;		case 7:			$re = 0.6;			break;		default:			$re = 1;			break;	}}

20% 割引でも同じことが当てはまります。

一定の当選者数の場合は、同じ方法で当選したかどうかを計算する必要があります。
残りの当選者数をデータベースに保存します。当選者が 0 になった場合、確率は 0 に調整できます。

40% オフから始めて、下に数えていくと、高い当選者は低い当選者ではなくなります

ここで重要なのは、一定の人数の当選確率であることです製品によっては抽選に参加する人の数が異なるため、10,000 人が参加する場合もあれば、1,000 人しか参加しない場合もあるため、ここで確率を推定するのは簡単ではありません。アルゴリズムの話でもありません

簡単な例を見てみましょう

10% 割引で勝率が 40% の場合、
10% 割引でも同じことが当てはまります

修正するには。当選者の数が多ければ、確率を推定し、同じ方法で賞品を獲得したかどうかを計算する必要があります。
当選者の数をデータベースに保存し、残りの当選者数が 0 になったら、確率を調整することができます。 0.

60% オフからカウントします。高勝者は低勝者ではなくなります

重要なのは、製品によって参加者数が異なる可能性があるため、一定の人数の確率が決定されないことです。抽選には 10,000 人が参加する場合もあれば、1,000 人しか参加しない場合もあるため、ここで確率を推定することは困難です

プログラムは計算問題を解決することしかできません。これは何人が抽選するかということではありません。プログラムが判断できることは、イベント プランナーが考慮する必要があることです... 人数の 40% オフか 30% オフか? 次に、推定範囲を設定してこのプログラムに渡すか、このプログラムに読み取らせる必要があります。

異なる人に対して 40% オフまたは 30% オフに対応するプログラムが欲しいと言っているのでしょうか? それは、推定範囲を設定してこのプログラムに渡すか、このプログラムに読み取らせる必要があります。言葉では、やはり確率を与える必要がありますよね?クエリ範囲。


さまざまな人に対して 40% オフまたは 30% オフに対応するプログラムが必要だということですか? それから、推定範囲を設定してプログラムに渡すか、プログラムに読み取らせる必要があります。言葉、あなたはまだ与えなければなりません 確率を設定しても大丈夫ですか?

はい...

どれだけの割引を希望するかに関係なく、数量を定義します。たとえば、10% 割引が必要な場合は、10 を描画し、ランダム関数を作成する必要があり、データベース クエリ範囲内に必要なレコードは 10 件だけです。

一度に10枚描くのではなく、ユーザーが来店したときに1回だけ描​​いて、抽選が終了するまで(できればこの時点でイベントがほぼ終了するまで)待つタイプのはずです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。