データファイル(php)には、以下のように構成された24ブロックのデータがあります。2つの連続したデータブロックをシャッフルします
//ts1
$P[] = [0];
$S[] = [[1,95.8172406762736],[2,104.97526726371],[3,112.03839938973],[4,101.70457396977],];
$F[] = [];
$FB[] = [];
//ts2
$P[] = [0];
$S[] = [[1,103.190939795922],[2,105.297198378469],[3,105.829786652111]];
$F[] = [];
$FB[] = [];
//ts3
$P[] = [0];
$S[] = [[1,107.285278217373],[2,103.557795069809],[3,105.686758569246],[4,103.748341353355]];
$F[] = [];
$FB[] = [];
最初の12ブロックをシャッフルしてブロック13-24をシャッフルする必要があります。私が持っているコードは、24ブロックすべてを一度にシャッフルするので動作しないようです。私はそれがそう書かれるべきかどうかはわかりません。..
// DATA INITIALISATION
// - Reads all data sets from server
// - Generates list of objects
// - Randomises list of objects
function DataInit1()
{
SeriesList = [];
CurrentGraph.Series = 0;
// load all the data sets from server
$.getJSON("datademo.php",
function(Data1)
{
for(var i=0; i<Data1.length; i+=4)
{
var P = Data1[i+0];
var S = Data1[i+1];
var F = Data1[i+2];
var FB = Data1[i+3];
var NewSeries = new SeriesClass(P,S,F,FB);
NewSeries.SeriesNumber = (i/4)+1;
SeriesList.push(NewSeries);
}
}
);
// shuffle each of the series lists to a random order
s1 = SeriesList.length/2;
s2 = SeriesList.length;
for(var i=0; i<s1; i++)
{
var j = Math.floor(Math.random() * (i+1));
var x = SeriesList[i];
SeriesList[i] = SeriesList[j];
SeriesList[j] = x;
}
for(var i=s1; i<s2; i++)
{
var j = Math.floor(Math.random() * (i+1));
var x = SeriesList[i];
SeriesList[i] = SeriesList[j];
SeriesList[j] = x;
}
}
が編集:私は次のように今それを変更しました(きれいではありませんが、私はそれを整理する時間がありません)。シリーズ1-12をランダム化しましたが、シリーズ13-24はランダム化されていません。私はそれを頻繁にコード化せず、最初のビットではうまくいくが、2番目のビットではうまくいかない理由はわかりません。
// shuffle the series list to a random order
for(var i=SeriesList.length-13; i>0; i--)
{
var j = Math.floor(Math.random() * (i+1));
var x = SeriesList[i];
SeriesList[i] = SeriesList[j];
SeriesList[j] = x;
}
for(var i={from: 12, to: 23}; i>0; i--)
{
var j = Math.floor(Math.random() * (i+1));
var x = SeriesList[i];
SeriesList[i] = SeriesList[j];
SeriesList[j] = x;
}
でフィドルを参照してください:私はこの質問からシャッフル方法を使用しました元の配列に抽出を戻しますか? –
申し訳ありませんが、私はあなたが何を意味するのか分かりません。私のパートナーはコードを書いていましたが、今は使用できません。既存のコードを扱うための知識があります。これまでの2つの 'for()'は読み込まれず、最初の 'for() '.. – ShariDB